summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--automation/source/testtool/objtest.cxx2
-rwxr-xr-x[-rw-r--r--]basic/source/classes/sb.cxx30
-rw-r--r--basic/source/classes/sbunoobj.cxx38
-rw-r--r--basic/source/runtime/makefile.mk3
-rw-r--r--bridges/prj/build.lst21
-rw-r--r--bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk3
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/cpp2uno.cxx676
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/except.cxx287
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/makefile.mk (renamed from fondu/makefile.mk)54
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/share.hxx98
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_alpha/uno2cpp.cxx532
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx6
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk3
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_intel/makefile.mk3
-rw-r--r--bridges/source/cpp_uno/mingw_intel/makefile.mk3
-rw-r--r--bridges/source/remote/urp/urp_job.hxx10
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx8
-rw-r--r--chart2/source/controller/main/ChartController_Window.cxx10
-rw-r--r--chart2/source/controller/main/ShapeToolbarController.cxx2
-rw-r--r--chart2/source/controller/main/UndoManager.cxx6
-rw-r--r--chart2/source/model/main/ChartModel.cxx6
-rw-r--r--chart2/source/model/main/ChartModel_Persistence.cxx13
-rw-r--r--chart2/source/model/main/DataSeries.cxx14
-rw-r--r--chart2/source/model/template/ChartTypeTemplate.cxx4
-rw-r--r--chart2/source/tools/LifeTime.cxx6
-rw-r--r--chart2/source/tools/RangeHighlighter.cxx6
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx6
-rw-r--r--chart2/source/view/main/ChartView.cxx6
-rw-r--r--chart2/source/view/main/VLegend.cxx11
-rw-r--r--configmgr/inc/configmgr/update.hxx7
-rw-r--r--configmgr/source/README1
-rw-r--r--configmgr/source/components.cxx65
-rw-r--r--configmgr/source/components.hxx18
-rw-r--r--configmgr/source/makefile.mk1
-rw-r--r--configmgr/source/partial.cxx137
-rw-r--r--configmgr/source/partial.hxx71
-rw-r--r--configmgr/source/update.cxx19
-rw-r--r--configmgr/source/valueparser.cxx22
-rw-r--r--configmgr/source/valueparser.hxx4
-rw-r--r--configmgr/source/writemodfile.cxx70
-rw-r--r--configmgr/source/xcdparser.cxx4
-rw-r--r--configmgr/source/xcdparser.hxx4
-rw-r--r--configmgr/source/xcsparser.cxx93
-rw-r--r--configmgr/source/xcsparser.hxx4
-rw-r--r--configmgr/source/xcuparser.cxx305
-rw-r--r--configmgr/source/xcuparser.hxx27
-rw-r--r--configure.in98
-rwxr-xr-xcrashrep/prj/d.lst3
-rwxr-xr-xcrashrep/source/unx/makefile.mk4
-rw-r--r--cui/source/dialogs/hldoctp.cxx14
-rw-r--r--cui/source/options/treeopt.cxx29
-rw-r--r--cui/source/tabpages/chardlg.cxx15
-rw-r--r--dbaccess/source/core/api/KeySet.cxx14
-rw-r--r--default_images/framework/res/folder_32.pngbin1012 -> 4205 bytes
-rw-r--r--default_images/framework/res/folder_32_hc.pngbin0 -> 3700 bytes
-rw-r--r--default_images/framework/res/templates_32.pngbin0 -> 4394 bytes
-rw-r--r--default_images/framework/res/templates_32_hc.pngbin0 -> 3838 bytes
-rw-r--r--default_images/res/odb_32_hc.pngbin0 -> 3867 bytes
-rw-r--r--default_images/res/odf_32_hc.pngbin0 -> 3880 bytes
-rw-r--r--default_images/res/odg_32_hc.pngbin0 -> 3955 bytes
-rw-r--r--default_images/res/odp_32_hc.pngbin0 -> 3805 bytes
-rw-r--r--default_images/res/ods_32_hc.pngbin0 -> 3778 bytes
-rw-r--r--default_images/res/odt_32_hc.pngbin0 -> 3831 bytes
-rw-r--r--desktop/scripts/soffice.sh4
-rw-r--r--desktop/scripts/unopkg.sh4
-rw-r--r--desktop/source/app/appfirststart.cxx4
-rw-r--r--desktop/source/app/makefile.mk1
-rw-r--r--desktop/source/deployment/manager/dp_manager.cxx18
-rw-r--r--desktop/source/deployment/misc/dp_platform.cxx9
-rw-r--r--desktop/source/deployment/registry/dp_registry.cxx18
-rw-r--r--desktop/source/deployment/registry/package/dp_package.cxx41
-rw-r--r--desktop/source/migration/migration.cxx213
-rw-r--r--desktop/source/migration/migration_impl.hxx5
-rw-r--r--desktop/source/splash/makefile.mk1
-rw-r--r--editeng/inc/editeng/svxacorr.hxx4
-rw-r--r--editeng/source/accessibility/AccessibleEditableTextPara.cxx20
-rw-r--r--editeng/source/editeng/editeng.cxx5
-rw-r--r--editeng/source/misc/svxacorr.cxx47
-rw-r--r--extensions/source/activex/main/so_activex.cpp4
-rw-r--r--extensions/source/nsplugin/source/nsplugin.rc2
-rw-r--r--extensions/source/nsplugin/source/so_env.cxx132
-rw-r--r--extensions/source/nsplugin/source/so_main.cxx2
-rw-r--r--extensions/source/ole/oleobjw.cxx40
-rw-r--r--extensions/source/ole/oleobjw.hxx1
-rw-r--r--extras/source/autotext/lang/ga-IE/acor_ga-IE.datbin0 -> 13750 bytes
-rw-r--r--extras/source/autotext/lang/sh-ME/acor_sh-ME.datbin0 -> 1631 bytes
-rw-r--r--extras/source/autotext/lang/sh-RS/acor_sh-RS.datbin0 -> 1631 bytes
-rw-r--r--extras/source/autotext/lang/sh-YU/acor_sh-YU.datbin0 -> 1631 bytes
-rw-r--r--extras/source/autotext/lang/sk/acor_sk-SK.datbin52356 -> 5641 bytes
-rw-r--r--extras/source/autotext/lang/sr-ME/acor_sr-ME.datbin0 -> 1683 bytes
-rw-r--r--extras/source/autotext/lang/sr-RS/acor_sr-RS.datbin0 -> 1683 bytes
-rw-r--r--extras/source/autotext/lang/sr-YU/acor_sr-YU.datbin0 -> 1683 bytes
-rwxr-xr-xextras/source/palettes/lang/eu/modern_eu.sog54
-rwxr-xr-xfetch_tarballs.sh69
-rw-r--r--filter/source/pdf/impdialog.cxx21
-rw-r--r--filter/source/pdf/impdialog.hrc2
-rw-r--r--filter/source/pdf/impdialog.hxx3
-rw-r--r--filter/source/pdf/impdialog.src11
-rw-r--r--filter/source/pdf/pdfexport.cxx4
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/body.xsl4819
-rw-r--r--fondu/prj/build.lst2
-rw-r--r--fondu/prj/d.lst2
-rw-r--r--framework/inc/classes/xmlnamespaces.hxx65
-rw-r--r--framework/inc/framework.hrc25
-rw-r--r--framework/inc/xml/toolboxlayoutdocumenthandler.hxx59
-rw-r--r--framework/source/services/backingwindow.cxx38
-rw-r--r--framework/source/services/backingwindow.hxx1
-rw-r--r--framework/source/services/fwk_services.src92
-rw-r--r--framework/source/uielement/rootitemcontainer.cxx1
-rw-r--r--framework/source/xml/makefile.mk1
-rw-r--r--framework/source/xml/toolboxconfiguration.cxx1
-rw-r--r--framework/source/xml/toolboxlayoutdocumenthandler.cxx58
-rw-r--r--framework/util/makefile.mk1
-rw-r--r--i18npool/source/isolang/isolang.cxx3
-rw-r--r--idlc/source/preproc/cpp.h3
-rw-r--r--instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmpbin0 -> 7112 bytes
-rw-r--r--instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmpbin0 -> 51772 bytes
-rw-r--r--instsetoo_native/macosx/application/PostInstall.applescript290
-rw-r--r--instsetoo_native/macosx/application/main.applescript363
-rwxr-xr-xinstsetoo_native/macosx/make_versioned.sh61
-rw-r--r--instsetoo_native/macosx/makefile.mk85
-rw-r--r--instsetoo_native/prj/build.lst5
-rw-r--r--instsetoo_native/res/osxdndinstall.pngbin14383 -> 0 bytes
-rw-r--r--instsetoo_native/util/makefile.mk15
-rw-r--r--instsetoo_native/util/openoffice.lst22
-rwxr-xr-xjavainstaller2/src/Helpfiles/makefile.mk11
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/SolarisHelper.java4
-rwxr-xr-xjavainstaller2/src/Localization/makefile.mk2
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx6
-rw-r--r--lpsolve/lp_solve_5.5.patch5
-rw-r--r--moz/makefile.mk3
-rw-r--r--moz/patches/link_fontconfig.patch11
-rw-r--r--mysqlc/images/sun_extension.pngbin5483 -> 0 bytes
-rw-r--r--mysqlc/images/sun_extension_hc.pngbin3176 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]mysqlc/source/description.xml4
-rwxr-xr-x[-rw-r--r--]mysqlc/source/description/description_en-US.txt2
-rwxr-xr-x[-rw-r--r--]mysqlc/source/makefile.mk8
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleRole.idl27
-rw-r--r--offapi/com/sun/star/rdf/XDocumentRepository.idl28
-rwxr-xr-xoffapi/com/sun/star/text/InContentMetadata.idl10
-rw-r--r--offapi/com/sun/star/text/TextMarkupType.idl6
-rw-r--r--offapi/com/sun/star/text/TextRangeContentProperties.idl133
-rw-r--r--offapi/com/sun/star/text/makefile.mk1
-rwxr-xr-xoffapi/com/sun/star/text/textfield/MetadataField.idl11
-rw-r--r--officecfg/registry/component-update.dtd5
-rw-r--r--officecfg/registry/data/org/openoffice/Office/Common.xcu2
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu84
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu24
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu18
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu18
-rw-r--r--officecfg/registry/data/org/openoffice/Office/Writer.xcu2
-rw-r--r--officecfg/registry/data/org/openoffice/Office/makefile.mk1
-rwxr-xr-xofficecfg/registry/data/org/openoffice/Setup.xcu124
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Calc.xcs4
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Common.xcs7
-rw-r--r--officecfg/registry/schema/org/openoffice/Setup.xcs5
-rw-r--r--officecfg/util/alllang.xsl6
-rwxr-xr-xooo_custom_images/broffice/introabout/about.pngbin14722 -> 7923 bytes
-rwxr-xr-xooo_custom_images/broffice/introabout/intro.pngbin42384 -> 14012 bytes
-rw-r--r--ooo_custom_images/classic/classic_images.tar.gzbin1643403 -> 1723339 bytes
-rwxr-xr-xooo_custom_images/dev_broffice/introabout/intro.pngbin49847 -> 16596 bytes
-rwxr-xr-xooo_custom_images/dev_nologo/introabout/intro.pngbin29323 -> 26740 bytes
-rwxr-xr-xooo_custom_images/dev_nologo_broffice/introabout/intro.pngbin47367 -> 14999 bytes
-rwxr-xr-xooo_custom_images/nologo/introabout/intro.pngbin27123 -> 24288 bytes
-rw-r--r--ooo_custom_images/nologo_broffice/delzip (renamed from instsetoo_native/macosx/delzip)0
-rw-r--r--ooo_custom_images/nologo_broffice/framework/res/backing.pngbin0 -> 12535 bytes
-rw-r--r--ooo_custom_images/nologo_broffice/framework/res/backing_hc.pngbin0 -> 6315 bytes
-rw-r--r--ooo_custom_images/nologo_broffice/framework/res/backing_right.pngbin0 -> 9942 bytes
-rw-r--r--ooo_custom_images/nologo_broffice/framework/res/backing_right_hc.pngbin0 -> 4658 bytes
-rwxr-xr-xooo_custom_images/nologo_broffice/introabout/intro.pngbin40062 -> 11692 bytes
-rwxr-xr-xooo_custom_images/nologo_broffice/makefile.mk20
-rw-r--r--ooo_custom_images/prj/build.lst4
-rw-r--r--ooo_custom_images/prj/d.lst2
-rw-r--r--ooo_custom_images/settings.pmk13
-rw-r--r--ooo_custom_images/target.pmk16
-rw-r--r--oovbaapi/genconstidl/makefile.mk5
-rw-r--r--oovbaapi/ooo/vba/constants/makefile.mk6
-rw-r--r--oovbaapi/ooo/vba/excel/makefile.mk5
-rw-r--r--oovbaapi/ooo/vba/makefile.mk6
-rw-r--r--oovbaapi/ooo/vba/msforms/makefile.mk5
-rw-r--r--oovbaapi/util/makefile.mk5
-rw-r--r--oox/inc/oox/drawingml/shape.hxx6
-rw-r--r--oox/source/drawingml/shape.cxx3
-rw-r--r--oox/source/ppt/pptshape.cxx2
-rw-r--r--oox/source/xls/pivottablebuffer.cxx2
-rw-r--r--packimages/pack/image-sort.lst6
-rw-r--r--padmin/source/padialog.cxx5
-rw-r--r--postprocess/checkdeliver/checkdeliver.pl2
-rw-r--r--postprocess/packregistry/makefile.mk1
-rw-r--r--postprocess/prj/build.lst2
-rwxr-xr-xpyuno/zipcore/makefile.mk2
-rw-r--r--redland/README6
-rw-r--r--redland/redland/makefile.mk4
-rw-r--r--redland/redland/redland-1.0.8.patch.free_null174
-rw-r--r--redland/redland/redland-1.0.8.patch.storage_hashes_context_serialize_get_statement35
-rw-r--r--redland/redland/redland-1.0.8.patch.storage_hashes_list_duplicates170
-rw-r--r--reportbuilder/images/em47.pngbin5483 -> 0 bytes
-rw-r--r--reportbuilder/images/em47_hc.pngbin3176 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]reportbuilder/util/component.txt2
-rwxr-xr-x[-rw-r--r--]reportbuilder/util/description.xml7
-rwxr-xr-x[-rw-r--r--]reportbuilder/util/makefile.mk10
-rwxr-xr-x[-rw-r--r--]reportbuilder/util/makefile.pmk0
-rw-r--r--rsc/inc/rsctools.hxx1
-rw-r--r--rsc/source/tools/rscchar.cxx133
-rw-r--r--sal/osl/unx/signal.c91
-rw-r--r--sal/rtl/source/macro.hxx2
-rw-r--r--sal/typesconfig/typesconfig.c2
-rw-r--r--sc/inc/column.hxx2
-rw-r--r--sc/inc/dbcolect.hxx1
-rw-r--r--sc/inc/document.hxx4
-rw-r--r--sc/inc/global.hxx1
-rw-r--r--sc/inc/segdefs_.hxx4985
-rw-r--r--sc/inc/servuno.hxx3
-rw-r--r--sc/inc/sheetdata.hxx5
-rw-r--r--sc/inc/table.hxx4
-rw-r--r--sc/source/core/data/cell2.cxx2
-rw-r--r--sc/source/core/data/column3.cxx17
-rw-r--r--sc/source/core/data/documen3.cxx11
-rw-r--r--sc/source/core/data/dpcachetable.cxx30
-rwxr-xr-xsc/source/core/data/dptablecache.cxx34
-rw-r--r--sc/source/core/data/global2.cxx51
-rw-r--r--sc/source/core/data/table3.cxx61
-rw-r--r--sc/source/core/inc/interpre.hxx1
-rw-r--r--sc/source/core/tool/dbcolect.cxx4
-rw-r--r--sc/source/core/tool/interpr1.cxx7
-rw-r--r--sc/source/core/tool/interpr4.cxx33
-rw-r--r--sc/source/filter/excel/excimp8.cxx11
-rw-r--r--sc/source/filter/html/htmlpars.cxx3
-rw-r--r--sc/source/filter/xml/sheetdata.cxx13
-rw-r--r--sc/source/filter/xml/xmlwrap.cxx32
-rw-r--r--sc/source/ui/app/inputhdl.cxx8
-rw-r--r--sc/source/ui/dbgui/filtdlg.cxx10
-rw-r--r--sc/source/ui/dbgui/makefile.mk1
-rw-r--r--sc/source/ui/dbgui/pfiltdlg.cxx3
-rw-r--r--sc/source/ui/dbgui/pvfundlg.cxx2
-rw-r--r--sc/source/ui/dbgui/validate.cxx2
-rw-r--r--sc/source/ui/docshell/docsh.cxx22
-rw-r--r--sc/source/ui/docshell/docsh2.cxx2
-rw-r--r--sc/source/ui/docshell/docsh5.cxx3
-rw-r--r--sc/source/ui/inc/filtdlg.hxx1
-rw-r--r--sc/source/ui/inc/gridwin.hxx2
-rw-r--r--sc/source/ui/src/scfuncs.src22
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx9
-rwxr-xr-xsc/source/ui/unoobj/dapiuno.cxx7
-rw-r--r--sc/source/ui/unoobj/docuno.cxx16
-rw-r--r--sc/source/ui/unoobj/servuno.cxx25
-rw-r--r--sc/source/ui/view/gridwin.cxx13
-rw-r--r--sc/util/makefile.mk1
-rw-r--r--scp2/source/crashrep/file_crashrep.scp18
-rw-r--r--scp2/source/ooo/common_brand.scp5
-rw-r--r--scp2/source/ooo/file_library_ooo.scp36
-rwxr-xr-xscp2/source/ooo/file_ooo.scp57
-rw-r--r--scp2/source/ooo/module_hidden_ooo.scp11
-rw-r--r--scp2/source/xsltfilter/file_xsltfilter.scp2
-rwxr-xr-x[-rw-r--r--]scripting/prj/build.lst2
-rw-r--r--scripting/source/dlgprov/dlgevtatt.cxx40
-rw-r--r--scripting/source/dlgprov/dlgevtatt.hxx5
-rw-r--r--scripting/source/dlgprov/makefile.mk1
-rw-r--r--[-rwxr-xr-x]scripting/source/vbaevents/eventhelper.cxx13
-rw-r--r--sd/inc/segdefs_.hxx1400
-rw-r--r--sd/inc/stlpool.hxx2
-rw-r--r--sd/source/core/stlpool.cxx14
-rw-r--r--sd/source/ui/animations/CustomAnimation.src2
-rw-r--r--sd/source/ui/func/fupage.cxx47
-rw-r--r--sd/source/ui/func/fupoor.cxx1
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx37
-rw-r--r--sd/source/ui/unoidl/unoobj.cxx40
-rwxr-xr-x[-rw-r--r--]sdext/source/minimizer/description.xml4
-rw-r--r--sdext/source/minimizer/images/em47.pngbin5483 -> 0 bytes
-rw-r--r--sdext/source/minimizer/images/em47_hc.pngbin3176 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]sdext/source/minimizer/makefile.mk6
-rwxr-xr-x[-rw-r--r--]sdext/source/pdfimport/config/description.xml4
-rw-r--r--sdext/source/pdfimport/images/pdfiext.pngbin5483 -> 0 bytes
-rw-r--r--sdext/source/pdfimport/images/pdfiext_hc.pngbin3176 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]sdext/source/pdfimport/makefile.mk6
-rw-r--r--sdext/source/presenter/bitmaps/em47.pngbin5483 -> 0 bytes
-rw-r--r--sdext/source/presenter/bitmaps/em47_hc.pngbin3176 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]sdext/source/presenter/description.xml4
-rwxr-xr-x[-rw-r--r--]sdext/source/presenter/makefile.mk13
-rw-r--r--set_soenv.in6
-rw-r--r--setup_native/prj/d.lst8
-rw-r--r--setup_native/source/java/brofficeorg_setup.gifbin0 -> 3115 bytes
-rwxr-xr-xsetup_native/source/java/javaversion.dat26
-rw-r--r--setup_native/source/java/javaversion2.dat26
-rw-r--r--setup_native/source/mac/broffice/DS_Storebin0 -> 12292 bytes
-rw-r--r--setup_native/source/mac/broffice/osxdndinstall.pngbin0 -> 15942 bytes
-rw-r--r--setup_native/source/mac/ooo/DS_Store (renamed from instsetoo_native/res/DS_Store)bin12292 -> 12292 bytes
-rw-r--r--setup_native/source/mac/ooo/DS_Store_Langpack (renamed from instsetoo_native/res/DS_Store_Langpack)bin12292 -> 12292 bytes
-rw-r--r--setup_native/source/mac/ooo/osxdndinstall.pngbin0 -> 14278 bytes
-rw-r--r--setup_native/source/packinfo/linuxcopyrightfile2
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office.txt16
-rw-r--r--setup_native/source/packinfo/spellchecker_selection.txt1
-rw-r--r--setup_native/source/win32/msi-encodinglist.txt2
-rw-r--r--setup_native/source/win32/nsis/brobanner.bmpbin9328 -> 8964 bytes
-rw-r--r--setup_native/source/win32/nsis/brobitmap.bmpbin52576 -> 52100 bytes
-rw-r--r--sfx2/inc/sfx2/Metadatable.hxx4
-rw-r--r--sfx2/inc/sfx2/app.hxx4
-rw-r--r--sfx2/inc/sfx2/objsh.hxx6
-rw-r--r--sfx2/qa/complex/DocumentMetadataAccessTest.java125
-rw-r--r--sfx2/source/dialog/about.cxx76
-rw-r--r--sfx2/source/doc/Metadatable.cxx68
-rw-r--r--sfx2/source/doc/guisaveas.cxx90
-rwxr-xr-x[-rw-r--r--]sfx2/source/doc/objmisc.cxx10
-rw-r--r--shell/source/backends/gconfbe/gconfaccess.cxx1
-rw-r--r--shell/source/win32/shlxthandler/makefile.mk7
-rw-r--r--smoketestoo_native/makefile.mk10
-rw-r--r--solenv/bin/cws.pl7
-rw-r--r--solenv/bin/make_installer.pl27
-rw-r--r--solenv/bin/mhids.pl6
-rw-r--r--solenv/bin/modules/CreatePDBRelocators.pm2
-rw-r--r--solenv/bin/modules/installer/archivefiles.pm24
-rw-r--r--solenv/bin/modules/installer/download.pm8
-rw-r--r--solenv/bin/modules/installer/epmfile.pm19
-rw-r--r--solenv/bin/modules/installer/globals.pm1
-rw-r--r--solenv/bin/modules/installer/scriptitems.pm20
-rw-r--r--solenv/bin/modules/installer/setupscript.pm6
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm9
-rw-r--r--solenv/bin/modules/installer/windows/idtglobal.pm8
-rw-r--r--solenv/bin/modules/installer/windows/property.pm18
-rw-r--r--solenv/bin/modules/installer/worker.pm9
-rw-r--r--solenv/bin/modules/installer/ziplist.pm8
-rw-r--r--solenv/bin/packregistry.xslt21
-rw-r--r--solenv/config/sdev300.ini4
-rw-r--r--solenv/inc/installationtest.mk6
-rw-r--r--solenv/inc/libs.mk2
-rw-r--r--solenv/inc/minor.mk6
-rw-r--r--solenv/inc/settings.mk2
-rw-r--r--solenv/inc/tg_config.mk3
-rw-r--r--solenv/inc/unx.mk4
-rw-r--r--[-rwxr-xr-x]solenv/inc/unxlngaxp.mk (renamed from crashrep/source/unx/crash_report.sh)28
-rw-r--r--soltools/cpp/cpp.h3
-rw-r--r--splitbuild/extern.lst2
-rw-r--r--stoc/source/corereflection/criface.cxx3
-rw-r--r--svl/source/items/style.cxx22
-rw-r--r--svl/source/misc/inettype.cxx17
-rw-r--r--svl/source/misc/urihelper.cxx3
-rw-r--r--svl/source/numbers/zformat.cxx2
-rw-r--r--svtools/source/filter.vcl/wmf/winmtf.cxx12
-rw-r--r--svtools/source/filter.vcl/wmf/winmtf.hxx3
-rw-r--r--svx/source/form/datanavi.cxx7
-rw-r--r--svx/source/form/fmundo.cxx47
-rw-r--r--svx/source/svdraw/svdoashp.cxx5
-rw-r--r--sw/inc/AnnotationWin.hxx83
-rw-r--r--sw/inc/PostItMgr.hxx129
-rw-r--r--sw/inc/SidebarWin.hxx272
-rw-r--r--sw/inc/SidebarWindowsTypes.hxx (renamed from sc/inc/segdefs.hxx)32
-rw-r--r--sw/inc/access.hrc33
-rw-r--r--sw/inc/accmap.hxx107
-rw-r--r--sw/inc/cmdid.h1
-rw-r--r--sw/inc/doc.hxx9
-rw-r--r--sw/inc/editsh.hxx11
-rw-r--r--sw/inc/fesh.hxx2
-rw-r--r--sw/inc/index.hxx2
-rw-r--r--sw/inc/ndarr.hxx26
-rw-r--r--sw/inc/ndtxt.hxx32
-rw-r--r--sw/inc/node.hxx38
-rw-r--r--sw/inc/postit.hxx413
-rw-r--r--sw/inc/postithelper.hxx95
-rw-r--r--sw/inc/rcid.hrc7
-rw-r--r--sw/inc/rolbck.hxx23
-rw-r--r--sw/inc/section.hxx255
-rw-r--r--sw/inc/sw_primitivetypes2d.hxx6
-rw-r--r--sw/inc/swabstdlg.hxx4
-rw-r--r--sw/inc/undobj.hxx142
-rw-r--r--sw/inc/unocrsrhelper.hxx7
-rw-r--r--sw/inc/unoidx.hxx12
-rw-r--r--sw/inc/unoprnms.hxx5
-rw-r--r--sw/inc/unosection.hxx12
-rw-r--r--sw/inc/unotextmarkup.hxx1
-rwxr-xr-xsw/inc/viewsh.hxx14
-rwxr-xr-xsw/qa/complex/writer/TextPortionEnumerationTest.java409
-rw-r--r--sw/qa/complex/writer/testdocuments/TESTXMLID.odtbin0 -> 10879 bytes
-rw-r--r--sw/source/core/SwNumberTree/SwNodeNum.cxx2
-rw-r--r--sw/source/core/access/acccell.cxx30
-rw-r--r--sw/source/core/access/acccell.hxx4
-rw-r--r--sw/source/core/access/acccontext.cxx304
-rw-r--r--sw/source/core/access/acccontext.hxx33
-rw-r--r--sw/source/core/access/accdoc.cxx4
-rw-r--r--sw/source/core/access/accfootnote.hxx10
-rw-r--r--sw/source/core/access/accframe.cxx266
-rw-r--r--sw/source/core/access/accframe.hxx122
-rw-r--r--sw/source/core/access/accframebase.hxx10
-rw-r--r--sw/source/core/access/accfrmobj.cxx401
-rw-r--r--sw/source/core/access/accfrmobj.hxx214
-rw-r--r--sw/source/core/access/accfrmobjmap.cxx154
-rw-r--r--sw/source/core/access/accfrmobjmap.hxx92
-rw-r--r--sw/source/core/access/accfrmobjslist.cxx129
-rw-r--r--sw/source/core/access/accfrmobjslist.hxx189
-rw-r--r--sw/source/core/access/accmap.cxx526
-rw-r--r--sw/source/core/access/accpara.cxx452
-rw-r--r--sw/source/core/access/accpara.hxx39
-rw-r--r--sw/source/core/access/accselectionhelper.cxx77
-rw-r--r--sw/source/core/access/acctable.cxx195
-rw-r--r--sw/source/core/access/acctable.hxx16
-rw-r--r--sw/source/core/access/makefile.mk6
-rw-r--r--sw/source/core/access/parachangetrackinginfo.cxx231
-rw-r--r--sw/source/core/access/parachangetrackinginfo.hxx59
-rw-r--r--sw/source/core/access/textmarkuphelper.cxx55
-rw-r--r--sw/source/core/access/textmarkuphelper.hxx29
-rw-r--r--sw/source/core/bastyp/index.cxx2
-rw-r--r--sw/source/core/crsr/crstrvl.cxx38
-rw-r--r--sw/source/core/crsr/findtxt.cxx5
-rw-r--r--sw/source/core/crsr/trvlfnfl.cxx8
-rw-r--r--sw/source/core/crsr/trvlreg.cxx2
-rw-r--r--sw/source/core/doc/dbgoutsw.cxx1
-rwxr-xr-xsw/source/core/doc/doc.cxx9
-rw-r--r--sw/source/core/doc/docbm.cxx5
-rw-r--r--sw/source/core/doc/doccomp.cxx2
-rw-r--r--sw/source/core/doc/docdde.cxx4
-rw-r--r--sw/source/core/doc/docfmt.cxx14
-rw-r--r--sw/source/core/doc/docglbl.cxx36
-rw-r--r--sw/source/core/doc/doclay.cxx2
-rw-r--r--sw/source/core/doc/docnew.cxx4
-rw-r--r--sw/source/core/doc/doctxm.cxx77
-rw-r--r--sw/source/core/docnode/ndsect.cxx263
-rw-r--r--sw/source/core/docnode/node2lay.cxx4
-rw-r--r--sw/source/core/docnode/section.cxx499
-rw-r--r--sw/source/core/draw/dview.cxx5
-rw-r--r--sw/source/core/edit/edattr.cxx8
-rw-r--r--sw/source/core/edit/edglbldc.cxx2
-rw-r--r--sw/source/core/edit/edsect.cxx16
-rw-r--r--sw/source/core/edit/edtox.cxx7
-rw-r--r--sw/source/core/fields/postithelper.cxx72
-rw-r--r--sw/source/core/frmedt/fecopy.cxx13
-rw-r--r--sw/source/core/frmedt/fefly1.cxx6
-rw-r--r--sw/source/core/frmedt/feshview.cxx7
-rw-r--r--sw/source/core/inc/cellfrm.hxx4
-rw-r--r--sw/source/core/inc/doctxm.hxx2
-rw-r--r--sw/source/core/inc/pagefrm.hxx6
-rwxr-xr-xsw/source/core/inc/unometa.hxx17
-rw-r--r--sw/source/core/inc/viewimp.hxx15
-rw-r--r--sw/source/core/inc/wrong.hxx8
-rw-r--r--sw/source/core/layout/layact.cxx24
-rw-r--r--sw/source/core/layout/pagechg.cxx14
-rw-r--r--sw/source/core/layout/paintfrm.cxx2
-rw-r--r--sw/source/core/layout/tabfrm.cxx50
-rw-r--r--sw/source/core/layout/wsfrm.cxx22
-rw-r--r--sw/source/core/text/EnhancedPDFExportHelper.cxx11
-rw-r--r--sw/source/core/text/inftxt.cxx6
-rw-r--r--sw/source/core/text/txtfly.cxx78
-rw-r--r--sw/source/core/text/txtfrm.cxx7
-rw-r--r--sw/source/core/txtnode/ndtxt.cxx123
-rw-r--r--sw/source/core/undo/rolbck.cxx5
-rw-r--r--sw/source/core/undo/unattr.cxx4
-rw-r--r--sw/source/core/undo/undel.cxx9
-rw-r--r--sw/source/core/undo/unsect.cxx302
-rw-r--r--sw/source/core/unocore/unocoll.cxx7
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx85
-rw-r--r--sw/source/core/unocore/unoidx.cxx209
-rw-r--r--sw/source/core/unocore/unomap.cxx3
-rw-r--r--sw/source/core/unocore/unoobj2.cxx4
-rw-r--r--sw/source/core/unocore/unoprnms.cxx1
-rw-r--r--sw/source/core/unocore/unorefmk.cxx86
-rw-r--r--sw/source/core/unocore/unosect.cxx244
-rw-r--r--sw/source/core/view/viewimp.cxx4
-rwxr-xr-xsw/source/core/view/viewsh.cxx46
-rw-r--r--sw/source/filter/html/htmlsect.cxx26
-rw-r--r--sw/source/filter/html/wrthtml.cxx5
-rw-r--r--sw/source/filter/inc/fltshell.hxx7
-rw-r--r--sw/source/filter/rtf/rtffly.cxx4
-rw-r--r--sw/source/filter/rtf/swparrtf.cxx5
-rw-r--r--sw/source/filter/ww1/fltshell.cxx37
-rw-r--r--sw/source/filter/ww1/w1filter.cxx4
-rw-r--r--sw/source/filter/ww8/WW8Sttbf.cxx1
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx6
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx5
-rw-r--r--sw/source/filter/ww8/ww8par.cxx2
-rw-r--r--sw/source/filter/ww8/ww8par.hxx2
-rw-r--r--sw/source/filter/ww8/ww8par5.cxx8
-rw-r--r--sw/source/filter/ww8/ww8par6.cxx13
-rw-r--r--sw/source/filter/xml/xmltbli.cxx6
-rw-r--r--sw/source/ui/app/applab.cxx9
-rw-r--r--sw/source/ui/app/docsh.cxx17
-rw-r--r--sw/source/ui/dialog/regionsw.cxx14
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx5
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx2
-rw-r--r--sw/source/ui/dialog/uiregionsw.cxx314
-rw-r--r--sw/source/ui/dochdl/swdtflvr.cxx9
-rw-r--r--sw/source/ui/docvw/AnchorOverlayObject.cxx467
-rw-r--r--sw/source/ui/docvw/AnchorOverlayObject.hxx143
-rw-r--r--sw/source/ui/docvw/AnnotationMenuButton.cxx222
-rw-r--r--sw/source/ui/docvw/AnnotationMenuButton.hxx63
-rw-r--r--sw/source/ui/docvw/AnnotationWin.cxx292
-rw-r--r--sw/source/ui/docvw/PostItMgr.cxx583
-rw-r--r--sw/source/ui/docvw/ShadowOverlayObject.cxx268
-rw-r--r--sw/source/ui/docvw/ShadowOverlayObject.hxx80
-rw-r--r--sw/source/ui/docvw/SidebarTxtControl.cxx422
-rw-r--r--sw/source/ui/docvw/SidebarTxtControl.hxx87
-rw-r--r--sw/source/ui/docvw/SidebarTxtControlAcc.cxx317
-rw-r--r--sw/source/ui/docvw/SidebarTxtControlAcc.hxx56
-rw-r--r--sw/source/ui/docvw/SidebarWin.cxx1373
-rw-r--r--sw/source/ui/docvw/SidebarWinAcc.cxx162
-rw-r--r--sw/source/ui/docvw/SidebarWinAcc.hxx67
-rw-r--r--sw/source/ui/docvw/access.src16
-rw-r--r--sw/source/ui/docvw/annotation.hrc54
-rw-r--r--sw/source/ui/docvw/annotation.src (renamed from sd/inc/segdefs.hxx)43
-rw-r--r--sw/source/ui/docvw/docvw.hrc11
-rw-r--r--sw/source/ui/docvw/docvw.src35
-rw-r--r--sw/source/ui/docvw/edtwin.cxx25
-rw-r--r--sw/source/ui/docvw/edtwin2.cxx1
-rw-r--r--sw/source/ui/docvw/frmsidebarwincontainer.cxx216
-rw-r--r--sw/source/ui/docvw/frmsidebarwincontainer.hxx73
-rw-r--r--sw/source/ui/docvw/makefile.mk15
-rw-r--r--sw/source/ui/docvw/postit.cxx2482
-rw-r--r--sw/source/ui/frmdlg/column.cxx3
-rw-r--r--sw/source/ui/inc/SidebarWindowsConsts.hxx (renamed from xmloff/source/core/xmlkywd.cxx)19
-rw-r--r--sw/source/ui/inc/regionsw.hxx89
-rw-r--r--sw/source/ui/inc/wrtsh.hxx4
-rw-r--r--sw/source/ui/makefile.mk4
-rwxr-xr-xsw/source/ui/shells/annotsh.cxx112
-rw-r--r--sw/source/ui/shells/textdrw.cxx1
-rw-r--r--sw/source/ui/shells/textfld.cxx19
-rw-r--r--sw/source/ui/uiview/pview.cxx2
-rw-r--r--sw/source/ui/uiview/view.cxx7
-rw-r--r--sw/source/ui/uiview/view2.cxx14
-rw-r--r--sw/source/ui/uiview/viewmdi.cxx19
-rw-r--r--sw/source/ui/uiview/viewsrch.cxx2
-rw-r--r--sw/source/ui/uiview/viewtab.cxx7
-rw-r--r--sw/source/ui/utlui/attrdesc.cxx6
-rw-r--r--sw/source/ui/utlui/attrdesc.hrc6
-rw-r--r--sw/source/ui/utlui/attrdesc.src6
-rw-r--r--sw/source/ui/utlui/content.cxx12
-rw-r--r--sw/source/ui/utlui/glbltree.cxx36
-rw-r--r--sw/source/ui/vba/vbafind.cxx4
-rw-r--r--sw/source/ui/vba/vbafind.hxx2
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.cxx3
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.hxx2
-rw-r--r--sw/source/ui/vba/vbarange.cxx4
-rw-r--r--sw/source/ui/vba/vbarange.hxx2
-rw-r--r--sw/source/ui/vba/vbasystem.cxx5
-rw-r--r--sw/source/ui/vba/vbasystem.hxx1
-rw-r--r--sw/source/ui/vba/vbawindow.cxx5
-rw-r--r--sw/source/ui/vba/vbawindow.hxx1
-rw-r--r--sw/source/ui/vba/vbawrapformat.cxx5
-rw-r--r--sw/source/ui/vba/vbawrapformat.hxx1
-rw-r--r--sw/source/ui/wrtsh/wrtsh1.cxx4
-rw-r--r--sw/source/ui/wrtsh/wrtsh2.cxx10
-rw-r--r--sw/util/makefile.mk10
-rw-r--r--sysui/desktop/freedesktop/freedesktop-menus.spec2
-rw-r--r--sysui/desktop/macosx/Info.plist4
-rw-r--r--sysui/desktop/macosx/makefile.mk8
-rw-r--r--sysui/desktop/mandriva/mandriva-menus.spec2
-rw-r--r--sysui/desktop/mimetypes/extension.desktop2
-rw-r--r--sysui/desktop/redhat/redhat-menus.spec2
-rw-r--r--sysui/desktop/suse/suse-menus.spec2
-rwxr-xr-xtestautomation/dbaccess/optional/includes/frm_FormFilter.inc6
-rwxr-xr-xtestautomation/framework/optional/f_basic_vba-compat.bas7
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/CJK_CollationDialogue_1.inc16
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/CJK_RubyDialogueProposal_1.inc2
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/basic_issues.inc106
-rw-r--r--testautomation/framework/optional/includes/basic_vba-compat_security_check.inc105
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/configuration.inc13
-rw-r--r--testautomation/framework/optional/input/vba-compat/Book1.xlsbin0 -> 18432 bytes
-rwxr-xr-x[-rw-r--r--]testautomation/framework/required/includes/printer_administration.inc42
-rwxr-xr-x[-rw-r--r--]testautomation/framework/tools/includes/CJK_tools.inc17
-rwxr-xr-xtestautomation/framework/tools/input/i18ndata.txt2
-rwxr-xr-xtestautomation/global/input/macros.txt45
-rwxr-xr-x[-rw-r--r--]testautomation/global/input/officeinfo.txt1
-rwxr-xr-xtestautomation/global/system/includes/iniinfo.inc24
-rwxr-xr-xtestautomation/global/system/includes/master.inc29
-rwxr-xr-x[-rw-r--r--]testautomation/global/system/includes/status.inc3
-rwxr-xr-x[-rw-r--r--]testautomation/global/tools/includes/optional/t_locale_strings1.inc28
-rwxr-xr-x[-rw-r--r--]testautomation/global/tools/includes/optional/t_toolbar_tools1.inc17
-rwxr-xr-x[-rw-r--r--]testautomation/global/tools/includes/required/t_doc2.inc22
-rwxr-xr-xtestautomation/global/win/edia_d_h.win6
-rwxr-xr-xtestautomation/global/win/spadmin.win1
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/g_autocorrection.inc4
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/g_find_replace.inc3
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/g_ole.inc4
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/g_stylist.inc24
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/gallery.inc5
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/id_005.inc6
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/impress/i_slideshow.inc6
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/impress/i_us_present.inc176
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/required/includes/global/id_005.inc6
-rwxr-xr-xtestautomation/spreadsheet/required/includes/c_upd_filemenu.inc6
-rwxr-xr-x[-rw-r--r--]testautomation/spreadsheet/required/includes/c_upd_viewmenu.inc15
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion1.inc38
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion2.inc50
-rwxr-xr-xtestautomation/writer/optional/includes/regexp/search.inc7
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/stylist/w_stylist.inc510
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/undo/w_undo_history_1.inc2
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/undo/w_undo_history_2.inc4
-rwxr-xr-x[-rw-r--r--]testautomation/writer/required/includes/w_002_.inc28
-rwxr-xr-x[-rw-r--r--]testautomation/writer/required/includes/w_011_.inc8
-rwxr-xr-x[-rw-r--r--]testautomation/writer/tools/includes/w_locale_strings2.inc27
-rwxr-xr-x[-rw-r--r--]testautomation/writer/tools/includes/w_tool1.inc14
-rw-r--r--toolkit/source/layout/core/box-base.cxx5
-rw-r--r--toolkit/source/layout/core/box-base.hxx2
-rw-r--r--toolkit/src2xml/include.lst1
-rw-r--r--tools/inc/tools/solar.h2
-rw-r--r--tools/inc/tools/urlobj.hxx31
-rw-r--r--tools/source/fsys/urlobj.cxx64
-rw-r--r--tools/workben/urltest.cxx14
-rw-r--r--ucb/source/core/ucb.cxx414
-rw-r--r--ucb/source/core/ucb.hxx39
-rw-r--r--ucbhelper/inc/ucbhelper/configureucb.hxx201
-rw-r--r--ucbhelper/inc/ucbhelper/contentbroker.hxx2
-rw-r--r--ucbhelper/inc/ucbhelper/registerucb.hxx129
-rw-r--r--ucbhelper/prj/d.lst2
-rw-r--r--ucbhelper/source/client/contentbroker.cxx16
-rw-r--r--ucbhelper/source/provider/makefile.mk2
-rw-r--r--ucbhelper/source/provider/registerucb.cxx40
-rw-r--r--ucbhelper/source/provider/registerucb.hxx96
-rw-r--r--unoxml/qa/complex/RDFRepositoryTest.java22
-rw-r--r--unoxml/source/rdf/librdf_repository.cxx402
-rw-r--r--vbahelper/inc/vbahelper/vbaaccesshelper.hxx79
-rw-r--r--vbahelper/inc/vbahelper/vbahelper.hxx12
-rw-r--r--vbahelper/prj/d.lst1
-rw-r--r--vbahelper/source/msforms/makefile.mk5
-rw-r--r--vbahelper/source/msforms/vbacontrol.cxx4
-rw-r--r--vbahelper/source/msforms/vbacontrol.hxx1
-rw-r--r--vbahelper/source/vbahelper/makefile.mk5
-rw-r--r--vbahelper/source/vbahelper/vbahelper.cxx16
-rw-r--r--vbahelper/util/makefile.mk4
-rw-r--r--vcl/aqua/inc/salframe.h2
-rw-r--r--vcl/aqua/inc/salinst.h2
-rw-r--r--vcl/aqua/source/a11y/aqua11yfactory.mm3
-rw-r--r--vcl/aqua/source/a11y/aqua11ytablewrapper.h10
-rw-r--r--vcl/aqua/source/a11y/aqua11ytablewrapper.mm182
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapper.mm31
-rw-r--r--vcl/aqua/source/app/salinst.cxx15
-rw-r--r--vcl/aqua/source/gdi/salgdi.cxx7
-rw-r--r--vcl/aqua/source/window/salframe.cxx17
-rwxr-xr-xvcl/aqua/source/window/salframeview.mm78
-rw-r--r--vcl/inc/vcl/button.hxx2
-rw-r--r--vcl/inc/vcl/cmdevt.hxx8
-rw-r--r--vcl/inc/vcl/glyphcache.hxx5
-rw-r--r--vcl/inc/vcl/outfont.hxx6
-rw-r--r--vcl/inc/vcl/salwtype.hxx5
-rw-r--r--vcl/os2/source/window/salframe.cxx7
-rwxr-xr-x[-rw-r--r--]vcl/source/app/settings.cxx2
-rw-r--r--vcl/source/control/button.cxx25
-rw-r--r--vcl/source/control/tabctrl.cxx2
-rw-r--r--vcl/source/fontsubset/cff.cxx60
-rw-r--r--vcl/source/gdi/bitmap.cxx18
-rw-r--r--vcl/source/gdi/outdev3.cxx12
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx2
-rwxr-xr-xvcl/source/gdi/sallayout.cxx4
-rw-r--r--vcl/source/glyphs/glyphcache.cxx6
-rw-r--r--vcl/source/src/print.src2
-rw-r--r--vcl/source/window/printdlg.cxx2
-rw-r--r--vcl/source/window/winproc.cxx3
-rw-r--r--vcl/unx/gtk/a11y/atkbridge.cxx3
-rw-r--r--vcl/unx/gtk/a11y/atktext.cxx136
-rw-r--r--vcl/unx/gtk/a11y/atktextattributes.cxx63
-rw-r--r--vcl/unx/gtk/a11y/atktextattributes.hxx5
-rw-r--r--vcl/unx/gtk/a11y/atkwindow.cxx26
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.cxx4
-rw-r--r--vcl/unx/gtk/app/gtkdata.cxx21
-rw-r--r--vcl/unx/gtk/window/gtkframe.cxx49
-rw-r--r--vcl/unx/inc/saldata.hxx4
-rw-r--r--vcl/unx/inc/wmadaptor.hxx24
-rw-r--r--vcl/unx/source/app/saldata.cxx1
-rw-r--r--vcl/unx/source/app/saldisp.cxx6
-rw-r--r--vcl/unx/source/app/wmadaptor.cxx89
-rw-r--r--vcl/unx/source/gdi/salgdi3.cxx38
-rw-r--r--vcl/unx/source/plugadapt/salplug.cxx8
-rw-r--r--vcl/unx/source/window/salframe.cxx142
-rw-r--r--vcl/win/source/gdi/salgdi3.cxx313
-rw-r--r--vcl/win/source/gdi/salnativewidgets-luna.cxx29
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx2
-rw-r--r--writerperfect/source/wpdimp/WordPerfectImportFilter.cxx3
-rw-r--r--xmloff/inc/RDFaExportHelper.hxx2
-rw-r--r--xmloff/inc/RDFaImportHelper.hxx24
-rw-r--r--xmloff/inc/xmlkywd.hxx1998
-rw-r--r--xmloff/inc/xmloff/txtimp.hxx388
-rw-r--r--xmloff/inc/xmloff/xmlimp.hxx7
-rw-r--r--xmloff/prj/d.lst1
-rw-r--r--xmloff/source/chart/SchXMLExport.cxx8
-rw-r--r--xmloff/source/chart/SchXMLPlotAreaContext.cxx4
-rw-r--r--xmloff/source/chart/SchXMLSeries2Context.cxx225
-rw-r--r--xmloff/source/chart/SchXMLTableContext.cxx12
-rw-r--r--xmloff/source/chart/SchXMLTools.cxx70
-rw-r--r--xmloff/source/chart/SchXMLTools.hxx5
-rw-r--r--xmloff/source/core/RDFaExportHelper.cxx61
-rw-r--r--xmloff/source/core/RDFaImportHelper.cxx98
-rw-r--r--xmloff/source/core/makefile.mk7
-rw-r--r--xmloff/source/core/xmlimp.cxx23
-rw-r--r--xmloff/source/draw/XMLReplacementImageContext.cxx1
-rw-r--r--xmloff/source/draw/sdpropls.cxx3
-rw-r--r--xmloff/source/draw/shapeexport.cxx40
-rw-r--r--xmloff/source/draw/ximpshap.cxx53
-rw-r--r--xmloff/source/style/WordWrapPropertyHdl.cxx1
-rw-r--r--xmloff/source/style/XMLClipPropertyHandler.cxx3
-rw-r--r--xmloff/source/style/XMLRectangleMembersHandler.cxx5
-rw-r--r--xmloff/source/style/adjushdl.cxx4
-rw-r--r--xmloff/source/style/backhdl.cxx4
-rw-r--r--xmloff/source/style/bordrhdl.cxx4
-rw-r--r--xmloff/source/style/breakhdl.cxx4
-rw-r--r--xmloff/source/style/cdouthdl.cxx6
-rw-r--r--xmloff/source/style/chrhghdl.cxx4
-rw-r--r--xmloff/source/style/chrlohdl.cxx4
-rw-r--r--xmloff/source/style/csmaphdl.cxx6
-rw-r--r--xmloff/source/style/escphdl.cxx4
-rw-r--r--xmloff/source/style/fonthdl.cxx3
-rw-r--r--xmloff/source/style/lspachdl.cxx4
-rw-r--r--xmloff/source/style/postuhdl.cxx4
-rw-r--r--xmloff/source/style/styleexp.cxx1
-rw-r--r--xmloff/source/style/undlihdl.cxx6
-rw-r--r--xmloff/source/style/xmlimppr.cxx1
-rw-r--r--xmloff/source/style/xmlnumfi.cxx2
-rw-r--r--xmloff/source/text/XMLIndexTOCContext.cxx38
-rw-r--r--xmloff/source/text/XMLIndexTOCContext.hxx3
-rw-r--r--xmloff/source/text/XMLPropertyBackpatcher.cxx61
-rw-r--r--xmloff/source/text/XMLSectionExport.cxx190
-rw-r--r--xmloff/source/text/XMLSectionImportContext.cxx6
-rw-r--r--xmloff/source/text/XMLTextFrameContext.cxx30
-rw-r--r--xmloff/source/text/XMLTextListBlockContext.cxx10
-rw-r--r--xmloff/source/text/XMLTextListItemContext.cxx4
-rw-r--r--xmloff/source/text/XMLTextMarkImportContext.cxx55
-rw-r--r--xmloff/source/text/txtfldi.cxx81
-rw-r--r--xmloff/source/text/txtimp.cxx1223
-rw-r--r--xmloff/source/text/txtlists.cxx5
-rw-r--r--xmloff/source/text/txtparae.cxx1
-rw-r--r--xmloff/source/text/txtparai.cxx2
-rw-r--r--xmloff/util/makefile.mk26
717 files changed, 22195 insertions, 23103 deletions
diff --git a/automation/source/testtool/objtest.cxx b/automation/source/testtool/objtest.cxx
index 461dff80b13d..2361361f277f 100644
--- a/automation/source/testtool/objtest.cxx
+++ b/automation/source/testtool/objtest.cxx
@@ -518,6 +518,8 @@ void TestToolObj::LoadIniFile() // Laden der IniEinstellungen, die d
abGP.Append( "21" ); // Linux S390
#elif defined LINUX && defined HPPA
abGP.Append( "22" ); // Linux PA-RISC
+#elif defined LINUX && defined AXP
+ abGP.Append( "23" ); // Linux ALPHA
#else
#error ("unknown platform. please request an ID for your platform on qa/dev")
#endif
diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index 86850d9991c6..3373442e5eb2 100644..100755
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -54,6 +54,7 @@
#include "sb.hrc"
#include <basrid.hxx>
#include <vos/mutex.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
// #pragma SW_SEGMENT_CLASS( SBASIC, SBASIC_CODE )
@@ -63,18 +64,43 @@ TYPEINIT1(StarBASIC,SbxObject)
#define RTLNAME "@SBRTL"
// i#i68894#
+using com::sun::star::uno::Reference;
+using com::sun::star::uno::Any;
+using com::sun::star::uno::UNO_QUERY;
+using com::sun::star::lang::XMultiServiceFactory;
+
+const static String aThisComponent( RTL_CONSTASCII_USTRINGPARAM("ThisComponent") );
+const static String aVBAHook( RTL_CONSTASCII_USTRINGPARAM( "VBAGlobals" ) );
SbxObject* StarBASIC::getVBAGlobals( )
{
if ( !pVBAGlobals )
- pVBAGlobals = (SbUnoObject*)Find( String(RTL_CONSTASCII_USTRINGPARAM("VBAGlobals")), SbxCLASS_DONTCARE );
+ {
+ Any aThisDoc;
+ if ( GetUNOConstant("ThisComponent", aThisDoc) )
+ {
+ Reference< XMultiServiceFactory > xDocFac( aThisDoc, UNO_QUERY );
+ if ( xDocFac.is() )
+ {
+ try
+ {
+ xDocFac->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAGlobals" ) ) );
+ }
+ catch( Exception& )
+ {
+ // Ignore
+ }
+ }
+ }
+ pVBAGlobals = (SbUnoObject*)Find( aVBAHook , SbxCLASS_DONTCARE );
+ }
return pVBAGlobals;
}
// i#i68894#
SbxVariable* StarBASIC::VBAFind( const String& rName, SbxClassType t )
{
- if( rName.EqualsAscii("ThisComponent") )
+ if( rName == aThisComponent )
return NULL;
// rename to init globals
if ( getVBAGlobals( ) )
diff --git a/basic/source/classes/sbunoobj.cxx b/basic/source/classes/sbunoobj.cxx
index 0e8928bc6c1a..1c95b4f30de6 100644
--- a/basic/source/classes/sbunoobj.cxx
+++ b/basic/source/classes/sbunoobj.cxx
@@ -139,16 +139,19 @@ bool SbUnoObject::getDefaultPropName( SbUnoObject* pUnoObj, String& sDfltProp )
SbxVariable* getDefaultProp( SbxVariable* pRef )
{
SbxVariable* pDefaultProp = NULL;
- SbxObject* pObj = PTR_CAST(SbxObject,(SbxVariable*) pRef);
- if ( !pObj )
+ if ( pRef->GetType() == SbxOBJECT )
{
- SbxBase* pObjVarObj = pRef->GetObject();
- pObj = PTR_CAST(SbxObject,pObjVarObj);
- }
- if ( pObj && pObj->ISA(SbUnoObject) )
- {
- SbUnoObject* pUnoObj = PTR_CAST(SbUnoObject,(SbxObject*)pObj);
- pDefaultProp = pUnoObj->GetDfltProperty();
+ SbxObject* pObj = PTR_CAST(SbxObject,(SbxVariable*) pRef);
+ if ( !pObj )
+ {
+ SbxBase* pObjVarObj = pRef->GetObject();
+ pObj = PTR_CAST(SbxObject,pObjVarObj);
+ }
+ if ( pObj && pObj->ISA(SbUnoObject) )
+ {
+ SbUnoObject* pUnoObj = PTR_CAST(SbUnoObject,(SbxObject*)pObj);
+ pDefaultProp = pUnoObj->GetDfltProperty();
+ }
}
return pDefaultProp;
}
@@ -1601,6 +1604,23 @@ bool checkUnoObjectType( SbUnoObject* pUnoObj,
break;
}
::rtl::OUString sClassName = xClass->getName();
+ if ( sClassName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.oleautomation.XAutomationObject" ) ) ) )
+ {
+ // there is a hack in the extensions/source/ole/oleobj.cxx to return the typename of the automation object, lets check if it
+ // matches
+ Reference< XInvocation > xInv( aToInspectObj, UNO_QUERY );
+ if ( xInv.is() )
+ {
+ rtl::OUString sTypeName;
+ xInv->getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("$GetTypeName") ) ) >>= sTypeName;
+ if ( sTypeName.getLength() == 0 || sTypeName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("IDispatch") ) ) )
+ // can't check type, leave it pass
+ result = true;
+ else
+ result = sTypeName.equals( aClass );
+ }
+ break; // finished checking automation object
+ }
OSL_TRACE("Checking if object implements %s",
OUStringToOString( defaultNameSpace + aClass,
RTL_TEXTENCODING_UTF8 ).getStr() );
diff --git a/basic/source/runtime/makefile.mk b/basic/source/runtime/makefile.mk
index c0b4bd3bdc10..9bd197975ee6 100644
--- a/basic/source/runtime/makefile.mk
+++ b/basic/source/runtime/makefile.mk
@@ -82,8 +82,5 @@ EXCEPTIONSFILES=$(SLO)$/step0.obj \
$(SLO)$/%.obj: %.s
#kendy: Cut'n'paste from bridges/source/cpp_uno/mingw_intel/makefile.mk
-#cmc: Ideally --noexecstack would be in operations, but with #i51385# pyuno
-#remote bridgeing breaks
-# $(CC) -Wa,--noexecstack -c -o $(SLO)$/$(@:b).o $<
$(CC) -c -o $(SLO)$/$(@:b).obj $<
touch $@
diff --git a/bridges/prj/build.lst b/bridges/prj/build.lst
index c6e342520672..0e7979742562 100644
--- a/bridges/prj/build.lst
+++ b/bridges/prj/build.lst
@@ -12,16 +12,17 @@ br bridges\source\cpp_uno\gcc3_os2_intel nmake - p br_gcc3os br_cppuno_shared br
br bridges\source\cpp_uno\gcc3_freebsd_intel nmake - u br_gcc3fi br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_linux_x86-64 nmake - u br_gcc3lx br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_freebsd_x86-64 nmake - u br_gcc3fx br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_powerpc nmake - u br_gcclp3 br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_powerpc64 nmake - u br_gcclp3_64 br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_mips nmake - u br_gcc3mips br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_m68k nmake - u br_gcc3m68k br_cppuno_shared br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_s390 nmake - u br_gccl33 br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_s390x nmake - u br_gccl3x br_unotypes br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_sparc nmake - u br_gccl3s br_unotypes br_cppuno_shared br_inc NULL
-br bridges\source\cpp_uno\gcc3_linux_arm nmake - u br_gccl3r br_unotypes NULL
-br bridges\source\cpp_uno\gcc3_linux_ia64 nmake - u br_gccl3a br_unotypes NULL
-br bridges\source\cpp_uno\gcc3_linux_hppa nmake - u br_gccl3h br_unotypes NULL
+br bridges\source\cpp_uno\gcc3_linux_powerpc nmake - u br_gcc3lp br_cppuno_shared br_unotypes br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_powerpc64 nmake - u br_gcc3lp_64 br_cppuno_shared br_unotypes br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_mips nmake - u br_gcc3lmips br_cppuno_shared br_unotypes br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_m68k nmake - u br_gcc3lm68k br_cppuno_shared br_unotypes br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_s390 nmake - u br_gcc3l3 br_unotypes br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_s390x nmake - u br_gcc3l3_64 br_unotypes br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_sparc nmake - u br_gcc3ls br_unotypes br_cppuno_shared br_inc NULL
+br bridges\source\cpp_uno\gcc3_linux_arm nmake - u br_gcc3lr br_unotypes NULL
+br bridges\source\cpp_uno\gcc3_linux_ia64 nmake - u br_gcc3la br_unotypes NULL
+br bridges\source\cpp_uno\gcc3_linux_hppa nmake - u br_gcc3lh br_unotypes NULL
+br bridges\source\cpp_uno\gcc3_linux_alpha nmake - u br_gcc3ll br_unotypes NULL
br bridges\source\cpp_uno\gcc3_macosx_intel nmake - u br_gcc3macoxi br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\gcc3_macosx_powerpc nmake - u br_gcc3macoxp br_cppuno_shared br_unotypes br_inc NULL
br bridges\source\cpp_uno\cc50_solaris_sparc nmake - u br_cc50sols br_unotypes br_cppuno_shared br_inc NULL
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk
index 1e00634bd6a3..87ff690dd653 100644
--- a/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_freebsd_intel/makefile.mk
@@ -77,8 +77,5 @@ SHL1STDLIBS= \
.INCLUDE : target.mk
$(SLO)$/%.obj: %.s
-#cmc: Ideally --noexecstack would be in operations, but with #i51385# pyuno
-#remote bridgeing breaks
-# $(CC) -Wa,--noexecstack -c -o $(SLO)$/$(@:b).o $<
$(CC) -c -o $(SLO)$/$(@:b).o $<
touch $@
diff --git a/bridges/source/cpp_uno/gcc3_linux_alpha/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_alpha/cpp2uno.cxx
new file mode 100644
index 000000000000..abc5ce67e4b4
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_linux_alpha/cpp2uno.cxx
@@ -0,0 +1,676 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_bridges.hxx"
+
+#include <com/sun/star/uno/genfunc.hxx>
+#include <uno/data.h>
+#include <typelib/typedescription.hxx>
+
+#include "bridges/cpp_uno/shared/bridge.hxx"
+#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx"
+#include "bridges/cpp_uno/shared/types.hxx"
+#include "bridges/cpp_uno/shared/vtablefactory.hxx"
+
+#include "share.hxx"
+#include <stdio.h>
+
+//Calling Standards:
+// "Calling Standard for Alpha Systems"
+// (Tru64 UNIX Version 5.1 or higher, August 2000)
+//http://www.tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/V51_HTML/ARH9MBTE/TITLE.HTM
+
+using namespace ::com::sun::star::uno;
+
+namespace
+{
+static typelib_TypeClass cpp2uno_call(
+ bridges::cpp_uno::shared::CppInterfaceProxy * pThis,
+ const typelib_TypeDescription * pMemberTypeDescr,
+ typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return
+ sal_Int32 nParams, typelib_MethodParameter * pParams,
+ void ** gpreg, void ** fpreg, void ** ovrflw,
+ sal_Int64 * pRegisterReturn /* space for register return */ )
+{
+#ifdef CMC_DEBUG
+ fprintf(stderr, "as far as cpp2uno_call\n");
+#endif
+ int nregs = 0; //number of words passed in registers
+
+ // gpreg: [ret *], this, [gpr params]
+ // fpreg: [fpr params]
+ // ovrflw: [gpr or fpr params (properly aligned)]
+
+ // return
+ typelib_TypeDescription * pReturnTypeDescr = 0;
+ if (pReturnTypeRef)
+ TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
+
+ void * pUnoReturn = 0;
+ void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need
+
+ if (pReturnTypeDescr)
+ {
+ if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
+ {
+ pUnoReturn = pRegisterReturn; // direct way for simple types
+ }
+ else // complex return via ptr (pCppReturn)
+ {
+ pCppReturn = *(void **)gpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+
+ pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
+ ? alloca( pReturnTypeDescr->nSize )
+ : pCppReturn); // direct way
+ }
+ }
+ // pop this
+ gpreg++;
+ fpreg++;
+ nregs++;
+
+ // stack space
+ OSL_ENSURE( sizeof(void *) == sizeof(sal_Int64), "### unexpected size!" );
+ // parameters
+ void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams );
+ void ** pCppArgs = pUnoArgs + nParams;
+ // indizes of values this have to be converted (interface conversion cpp<=>uno)
+ sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams));
+ // type descriptions for reconversions
+ typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams));
+
+ sal_Int32 nTempIndizes = 0;
+ for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
+ {
+ const typelib_MethodParameter & rParam = pParams[nPos];
+ typelib_TypeDescription * pParamTypeDescr = 0;
+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
+
+#ifdef CMC_DEBUG
+ fprintf(stderr, "arg %d of %d\n", nPos, nParams);
+#endif
+
+ if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) // value
+ {
+#ifdef CMC_DEBUG
+ fprintf(stderr, "simple type is %d\n", pParamTypeDescr->eTypeClass);
+#endif
+
+ switch (pParamTypeDescr->eTypeClass)
+ {
+ case typelib_TypeClass_FLOAT:
+ case typelib_TypeClass_DOUBLE:
+ if (nregs < axp::MAX_WORDS_IN_REGS)
+ {
+ if (pParamTypeDescr->eTypeClass == typelib_TypeClass_FLOAT)
+ {
+ float tmp = (float) (*((double *)fpreg));
+ (*((float *) fpreg)) = tmp;
+ }
+
+ pCppArgs[nPos] = pUnoArgs[nPos] = fpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+ }
+ else
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
+ ovrflw++;
+ }
+ break;
+ case typelib_TypeClass_BYTE:
+ case typelib_TypeClass_BOOLEAN:
+ if (nregs < axp::MAX_WORDS_IN_REGS)
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = gpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+ }
+ else
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
+ ovrflw++;
+ }
+ break;
+ case typelib_TypeClass_CHAR:
+ case typelib_TypeClass_SHORT:
+ case typelib_TypeClass_UNSIGNED_SHORT:
+ if (nregs < axp::MAX_WORDS_IN_REGS)
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = gpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+ }
+ else
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
+ ovrflw++;
+ }
+ break;
+ case typelib_TypeClass_ENUM:
+ case typelib_TypeClass_LONG:
+ case typelib_TypeClass_UNSIGNED_LONG:
+ if (nregs < axp::MAX_WORDS_IN_REGS)
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = gpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+ }
+ else
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
+ ovrflw++;
+ }
+ break;
+ default:
+ if (nregs < axp::MAX_WORDS_IN_REGS)
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = gpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+ }
+ else
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos] = ovrflw;
+ ovrflw++;
+ }
+ break;
+ }
+
+ // no longer needed
+ TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+ }
+ else // ptr to complex value | ref
+ {
+#ifdef CMC_DEBUG
+ fprintf(stderr, "complex, nregs is %d\n", nregs);
+#endif
+
+ void *pCppStack; //temporary stack pointer
+
+ if (nregs < axp::MAX_WORDS_IN_REGS)
+ {
+ pCppArgs[nPos] = pCppStack = *gpreg;
+ gpreg++;
+ fpreg++;
+ nregs++;
+ }
+ else
+ {
+ pCppArgs[nPos] = pCppStack = *ovrflw;
+ ovrflw++;
+ }
+
+ if (! rParam.bIn) // is pure out
+ {
+ // uno out is unconstructed mem!
+ pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize );
+ pTempIndizes[nTempIndizes] = nPos;
+ // will be released at reconversion
+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+ }
+ // is in/inout
+ else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
+ {
+ uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ),
+ pCppStack, pParamTypeDescr,
+ pThis->getBridge()->getCpp2Uno() );
+ pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
+ // will be released at reconversion
+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+ }
+ else // direct way
+ {
+ pUnoArgs[nPos] = pCppStack;
+ // no longer needed
+ TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+ }
+ }
+ }
+
+#ifdef CMC_DEBUG
+ fprintf(stderr, "end of params\n");
+#endif
+
+ // ExceptionHolder
+ uno_Any aUnoExc; // Any will be constructed by callee
+ uno_Any * pUnoExc = &aUnoExc;
+
+ // invoke uno dispatch call
+ (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc );
+
+ // in case an exception occured...
+ if (pUnoExc)
+ {
+ // destruct temporary in/inout params
+ for ( ; nTempIndizes--; )
+ {
+ sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+
+ if (pParams[nIndex].bIn) // is in/inout => was constructed
+ uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], 0 );
+ TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
+ }
+ if (pReturnTypeDescr)
+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
+
+ CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); // has to destruct the any
+ // is here for dummy
+ return typelib_TypeClass_VOID;
+ }
+ else // else no exception occured...
+ {
+ // temporary params
+ for ( ; nTempIndizes--; )
+ {
+ sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+ typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
+
+ if (pParams[nIndex].bOut) // inout/out
+ {
+ // convert and assign
+ uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
+ uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr,
+ pThis->getBridge()->getUno2Cpp() );
+ }
+ // destroy temp uno param
+ uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 );
+
+ TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+ }
+ // return
+ if (pCppReturn) // has complex return
+ {
+ if (pUnoReturn != pCppReturn) // needs reconversion
+ {
+ uno_copyAndConvertData( pCppReturn, pUnoReturn, pReturnTypeDescr,
+ pThis->getBridge()->getUno2Cpp() );
+ // destroy temp uno return
+ uno_destructData( pUnoReturn, pReturnTypeDescr, 0 );
+ }
+ // complex return ptr is set to return reg
+ *(void **)pRegisterReturn = pCppReturn;
+ }
+ if (pReturnTypeDescr)
+ {
+ typelib_TypeClass eRet = (typelib_TypeClass)pReturnTypeDescr->eTypeClass;
+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
+ return eRet;
+ }
+ else
+ return typelib_TypeClass_VOID;
+ }
+}
+
+
+//============================================================================
+static typelib_TypeClass cpp_mediate(
+ sal_uInt64 nOffsetAndIndex,
+ void ** gpreg, void ** fpreg, void ** ovrflw,
+ sal_Int64 * pRegisterReturn /* space for register return */ )
+{
+ OSL_ENSURE( sizeof(sal_Int64)==sizeof(void *), "### unexpected!" );
+
+ sal_Int32 nVtableOffset = (nOffsetAndIndex >> 32);
+ sal_Int32 nFunctionIndex = (nOffsetAndIndex & 0xFFFFFFFF);
+
+#ifdef CMC_DEBUG
+ fprintf(stderr, "nVTableOffset, nFunctionIndex are %x %x\n", nVtableOffset, nFunctionIndex);
+#endif
+
+#ifdef CMC_DEBUG
+ // Let's figure out what is really going on here
+ {
+ fprintf( stderr, "= cpp_mediate () =\nGPR's (%d): ", 6 );
+ for ( unsigned int i = 0; i < 6; ++i )
+ fprintf( stderr, "0x%lx, ", gpreg[i] );
+ fprintf( stderr, "\n");
+ fprintf( stderr, "\nFPR's (%d): ", 6 );
+ for ( unsigned int i = 0; i < 6; ++i )
+ fprintf( stderr, "0x%lx (%f), ", fpreg[i], fpreg[i] );
+ fprintf( stderr, "\n");
+ }
+#endif
+
+
+ // gpreg: [ret *], this, [other gpr params]
+ // fpreg: [fpr params]
+ // ovrflw: [gpr or fpr params (properly aligned)]
+
+ // _this_ ptr is patched cppu_XInterfaceProxy object
+ void * pThis;
+ if( nFunctionIndex & 0x80000000 )
+ {
+ nFunctionIndex &= 0x7fffffff;
+ pThis = gpreg[1];
+ }
+ else
+ {
+ pThis = gpreg[0];
+ }
+
+ pThis = static_cast< char * >(pThis) - nVtableOffset;
+
+ bridges::cpp_uno::shared::CppInterfaceProxy * pCppI
+ = bridges::cpp_uno::shared::CppInterfaceProxy::castInterfaceToProxy(
+ pThis);
+
+ typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr();
+
+
+ OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
+ if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex)
+ {
+ throw RuntimeException(
+ rtl::OUString::createFromAscii("illegal vtable index!"),
+ (XInterface *)pCppI );
+ }
+
+ // determine called method
+ OSL_ENSURE( nVtableCall < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" );
+ sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex];
+ OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" );
+
+ TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] );
+
+ typelib_TypeClass eRet;
+ switch (aMemberDescr.get()->eTypeClass)
+ {
+ case typelib_TypeClass_INTERFACE_ATTRIBUTE:
+ {
+ if (pTypeDescr->pMapMemberIndexToFunctionIndex[nMemberPos] == nFunctionIndex)
+ {
+ // is GET method
+ eRet = cpp2uno_call(
+ pCppI, aMemberDescr.get(),
+ ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef,
+ 0, 0, // no params
+ gpreg, fpreg, ovrflw, pRegisterReturn );
+ }
+ else
+ {
+ // is SET method
+ typelib_MethodParameter aParam;
+ aParam.pTypeRef =
+ ((typelib_InterfaceAttributeTypeDescription *)aMemberDescr.get())->pAttributeTypeRef;
+ aParam.bIn = sal_True;
+ aParam.bOut = sal_False;
+
+ eRet = cpp2uno_call(
+ pCppI, aMemberDescr.get(),
+ 0, // indicates void return
+ 1, &aParam,
+ gpreg, fpreg, ovrflw, pRegisterReturn );
+ }
+ break;
+ }
+ case typelib_TypeClass_INTERFACE_METHOD:
+ {
+ // is METHOD
+ switch (nFunctionIndex)
+ {
+ case 1: // acquire()
+ pCppI->acquireProxy(); // non virtual call!
+ eRet = typelib_TypeClass_VOID;
+ break;
+ case 2: // release()
+ pCppI->releaseProxy(); // non virtual call!
+ eRet = typelib_TypeClass_VOID;
+ break;
+ case 0: // queryInterface() opt
+ {
+ typelib_TypeDescription * pTD = 0;
+ TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( gpreg[2] )->getTypeLibType() );
+ if (pTD)
+ {
+ XInterface * pInterface = 0;
+ (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface)(
+ pCppI->getBridge()->getCppEnv(),
+ (void **)&pInterface, pCppI->getOid().pData,
+ (typelib_InterfaceTypeDescription *)pTD );
+
+ if (pInterface)
+ {
+ ::uno_any_construct(
+ reinterpret_cast< uno_Any * >( gpreg[0] ),
+ &pInterface, pTD, cpp_acquire );
+ pInterface->release();
+ TYPELIB_DANGER_RELEASE( pTD );
+ *(void **)pRegisterReturn = gpreg[0];
+ eRet = typelib_TypeClass_ANY;
+ break;
+ }
+ TYPELIB_DANGER_RELEASE( pTD );
+ }
+ } // else perform queryInterface()
+ default:
+ eRet = cpp2uno_call(
+ pCppI, aMemberDescr.get(),
+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pReturnTypeRef,
+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->nParams,
+ ((typelib_InterfaceMethodTypeDescription *)aMemberDescr.get())->pParams,
+ gpreg, fpreg, ovrflw, pRegisterReturn );
+ }
+ break;
+ }
+ default:
+ {
+ throw RuntimeException(
+ rtl::OUString::createFromAscii("no member description found!"),
+ (XInterface *)pCppI );
+ // is here for dummy
+ eRet = typelib_TypeClass_VOID;
+ }
+ }
+
+ return eRet;
+}
+
+long cpp_vtable_call(long r16, long r17, long r18, long r19, long r20, long r21, long firstonstack)
+{
+ register long r1 asm("$1");
+ sal_uInt64 nOffsetAndIndex = r1;
+
+ long sp = (long)&firstonstack;
+
+ sal_uInt64 gpreg[axp::MAX_GPR_REGS];
+ gpreg[0] = r16;
+ gpreg[1] = r17;
+ gpreg[2] = r18;
+ gpreg[3] = r19;
+ gpreg[4] = r20;
+ gpreg[5] = r21;
+
+ double fpreg[axp::MAX_SSE_REGS];
+ register double f16 asm("$f16"); fpreg[0] = f16;
+ register double f17 asm("$f17"); fpreg[1] = f17;
+ register double f18 asm("$f18"); fpreg[2] = f18;
+ register double f19 asm("$f19"); fpreg[3] = f19;
+ register double f20 asm("$f20"); fpreg[4] = f20;
+ register double f21 asm("$f21"); fpreg[5] = f21;
+
+ volatile long nRegReturn[1];
+#ifdef CMC_DEBUG
+ fprintf(stderr, "before mediate with %lx\n",nOffsetAndIndex);
+ fprintf(stderr, "non-doubles are %x %x %x %x %x %x\n", gpreg[0], gpreg[1], gpreg[2], gpreg[3], gpreg[4], gpreg[5]);
+ fprintf(stderr, "doubles are %f %f %f %f %f %f\n", fpreg[0], fpreg[1], fpreg[2], fpreg[3], fpreg[4], fpreg[5]);
+#endif
+ typelib_TypeClass aType =
+ cpp_mediate( nOffsetAndIndex, (void**)gpreg, (void**)fpreg, (void**)sp,
+ (sal_Int64*)nRegReturn );
+#ifdef CMC_DEBUG
+ fprintf(stderr, "after mediate ret is %lx %ld\n", nRegReturn[0], nRegReturn[0]);
+#endif
+
+ switch( aType )
+ {
+ case typelib_TypeClass_BOOLEAN:
+ case typelib_TypeClass_BYTE:
+ nRegReturn[0] = (unsigned long)(*(unsigned char *)nRegReturn);
+ break;
+ case typelib_TypeClass_CHAR:
+ case typelib_TypeClass_UNSIGNED_SHORT:
+ case typelib_TypeClass_SHORT:
+ nRegReturn[0] = (unsigned long)(*(unsigned short *)nRegReturn);
+ break;
+ case typelib_TypeClass_ENUM:
+ case typelib_TypeClass_UNSIGNED_LONG:
+ case typelib_TypeClass_LONG:
+ nRegReturn[0] = (unsigned long)(*(unsigned int *)nRegReturn);
+ break;
+ case typelib_TypeClass_VOID:
+ default:
+ break;
+ case typelib_TypeClass_FLOAT:
+ {
+ double tmp = (double) (*((float *)nRegReturn));
+ (*((double *) nRegReturn)) = tmp;
+ }
+ //deliberate fall through
+ case typelib_TypeClass_DOUBLE:
+ __asm__ ( "ldt $f0,%0\n\t"
+ : : "m" (*((double*)nRegReturn)) : "$f0");
+ break;
+ }
+ return nRegReturn[0];
+}
+
+const int codeSnippetSize = 32;
+
+unsigned char *codeSnippet( unsigned char * code, sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, bool simple_ret_type )
+{
+ if (! simple_ret_type)
+ nFunctionIndex |= 0x80000000;
+
+ unsigned char * p = code;
+ *(unsigned int*)&p[0] = 0x47fb0401; /* mov $27,$1 */
+ *(unsigned int*)&p[4] = 0xa43b0010; /* ldq $1,16($27) */
+ *(unsigned int*)&p[8] = 0xa77b0018; /* ldq $27,24($27) */
+ *(unsigned int*)&p[12] = 0x6bfb0000; /* jmp $31,($27),0 */
+ *(unsigned int*)&p[16] = nFunctionIndex;
+ *(unsigned int*)&p[20] = nVtableOffset;
+ *(unsigned long*)&p[24] = (unsigned long)cpp_vtable_call;
+ return (code + codeSnippetSize);
+}
+}
+
+void bridges::cpp_uno::shared::VtableFactory::flushCode(unsigned char const *, unsigned char const *)
+{
+ //http://www.gnu.org/software/lightning/manual/html_node/Standard-functions.html
+ __asm__ __volatile__("call_pal 0x86");
+}
+
+struct bridges::cpp_uno::shared::VtableFactory::Slot { void * fn; };
+
+bridges::cpp_uno::shared::VtableFactory::Slot *
+bridges::cpp_uno::shared::VtableFactory::mapBlockToVtable(void * block)
+{
+ return static_cast< Slot * >(block) + 2;
+}
+
+sal_Size bridges::cpp_uno::shared::VtableFactory::getBlockSize(
+ sal_Int32 slotCount)
+{
+ return (slotCount + 2) * sizeof (Slot) + slotCount * codeSnippetSize;
+}
+
+bridges::cpp_uno::shared::VtableFactory::Slot *
+bridges::cpp_uno::shared::VtableFactory::initializeBlock(
+ void * block, sal_Int32 slotCount)
+{
+ Slot * slots = mapBlockToVtable(block);
+ slots[-2].fn = 0;
+ slots[-1].fn = 0;
+ return slots + slotCount;
+}
+
+unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
+ Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff,
+ typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
+ sal_Int32 functionCount, sal_Int32 vtableOffset)
+{
+ (*slots) -= functionCount;
+ Slot * s = *slots;
+#ifdef CMC_DEBUG
+ fprintf(stderr, "in addLocalFunctions functionOffset is %x\n",functionOffset);
+ fprintf(stderr, "in addLocalFunctions vtableOffset is %x\n",vtableOffset);
+#endif
+
+ for (sal_Int32 i = 0; i < type->nMembers; ++i) {
+ typelib_TypeDescription * member = 0;
+ TYPELIB_DANGER_GET(&member, type->ppMembers[i]);
+ OSL_ASSERT(member != 0);
+ switch (member->eTypeClass) {
+ case typelib_TypeClass_INTERFACE_ATTRIBUTE:
+ // Getter:
+ (s++)->fn = code + writetoexecdiff;
+ code = codeSnippet(
+ code, functionOffset++, vtableOffset,
+ bridges::cpp_uno::shared::isSimpleType(
+ reinterpret_cast<
+ typelib_InterfaceAttributeTypeDescription * >(
+ member)->pAttributeTypeRef));
+
+ // Setter:
+ if (!reinterpret_cast<
+ typelib_InterfaceAttributeTypeDescription * >(
+ member)->bReadOnly)
+ {
+ (s++)->fn = code + writetoexecdiff;
+ code = codeSnippet(code, functionOffset++, vtableOffset, true);
+ }
+ break;
+
+ case typelib_TypeClass_INTERFACE_METHOD:
+ (s++)->fn = code + writetoexecdiff;
+ code = codeSnippet(
+ code, functionOffset++, vtableOffset,
+ bridges::cpp_uno::shared::isSimpleType(
+ reinterpret_cast<
+ typelib_InterfaceMethodTypeDescription * >(
+ member)->pReturnTypeRef));
+ break;
+
+ default:
+ OSL_ASSERT(false);
+ break;
+ }
+ TYPELIB_DANGER_RELEASE(member);
+ }
+ return code;
+}
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_linux_alpha/except.cxx b/bridges/source/cpp_uno/gcc3_linux_alpha/except.cxx
new file mode 100644
index 000000000000..3e666a11cdd0
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_linux_alpha/except.cxx
@@ -0,0 +1,287 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_bridges.hxx"
+
+#include <stdio.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <cxxabi.h>
+#include <hash_map>
+
+#include <rtl/strbuf.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <osl/diagnose.h>
+#include <osl/mutex.hxx>
+
+#include <com/sun/star/uno/genfunc.hxx>
+#include <typelib/typedescription.hxx>
+#include <uno/any2.h>
+
+#include "share.hxx"
+
+
+using namespace ::std;
+using namespace ::osl;
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::__cxxabiv1;
+
+
+namespace CPPU_CURRENT_NAMESPACE
+{
+
+void dummy_can_throw_anything( char const * )
+{
+}
+
+//==================================================================================================
+static OUString toUNOname( char const * p ) SAL_THROW( () )
+{
+#if OSL_DEBUG_LEVEL > 1
+ char const * start = p;
+#endif
+
+ // example: N3com3sun4star4lang24IllegalArgumentExceptionE
+
+ OUStringBuffer buf( 64 );
+ OSL_ASSERT( 'N' == *p );
+ ++p; // skip N
+
+ while ('E' != *p)
+ {
+ // read chars count
+ long n = (*p++ - '0');
+ while ('0' <= *p && '9' >= *p)
+ {
+ n *= 10;
+ n += (*p++ - '0');
+ }
+ buf.appendAscii( p, n );
+ p += n;
+ if ('E' != *p)
+ buf.append( (sal_Unicode)'.' );
+ }
+
+#if OSL_DEBUG_LEVEL > 1
+ OUString ret( buf.makeStringAndClear() );
+ OString c_ret( OUStringToOString( ret, RTL_TEXTENCODING_ASCII_US ) );
+ fprintf( stderr, "> toUNOname(): %s => %s\n", start, c_ret.getStr() );
+ return ret;
+#else
+ return buf.makeStringAndClear();
+#endif
+}
+
+//==================================================================================================
+class RTTI
+{
+ typedef hash_map< OUString, type_info *, OUStringHash > t_rtti_map;
+
+ Mutex m_mutex;
+ t_rtti_map m_rttis;
+ t_rtti_map m_generatedRttis;
+
+ void * m_hApp;
+
+public:
+ RTTI() SAL_THROW( () );
+ ~RTTI() SAL_THROW( () );
+
+ type_info * getRTTI( typelib_CompoundTypeDescription * ) SAL_THROW( () );
+};
+//__________________________________________________________________________________________________
+RTTI::RTTI() SAL_THROW( () )
+ : m_hApp( dlopen( 0, RTLD_LAZY ) )
+{
+}
+//__________________________________________________________________________________________________
+RTTI::~RTTI() SAL_THROW( () )
+{
+ dlclose( m_hApp );
+}
+
+//__________________________________________________________________________________________________
+type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THROW( () )
+{
+ type_info * rtti;
+
+ OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
+
+ MutexGuard guard( m_mutex );
+ t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) );
+ if (iRttiFind == m_rttis.end())
+ {
+ // RTTI symbol
+ OStringBuffer buf( 64 );
+ buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") );
+ sal_Int32 index = 0;
+ do
+ {
+ OUString token( unoName.getToken( 0, '.', index ) );
+ buf.append( token.getLength() );
+ OString c_token( OUStringToOString( token, RTL_TEXTENCODING_ASCII_US ) );
+ buf.append( c_token );
+ }
+ while (index >= 0);
+ buf.append( 'E' );
+
+ OString symName( buf.makeStringAndClear() );
+ rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
+
+ if (rtti)
+ {
+ pair< t_rtti_map::iterator, bool > insertion(
+ m_rttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
+ OSL_ENSURE( insertion.second, "### inserting new rtti failed?!" );
+ }
+ else
+ {
+ // try to lookup the symbol in the generated rtti map
+ t_rtti_map::const_iterator iFind( m_generatedRttis.find( unoName ) );
+ if (iFind == m_generatedRttis.end())
+ {
+ // we must generate it !
+ // symbol and rtti-name is nearly identical,
+ // the symbol is prefixed with _ZTI
+ char const * rttiName = symName.getStr() +4;
+#if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr,"generated rtti for %s\n", rttiName );
+#endif
+ if (pTypeDescr->pBaseTypeDescription)
+ {
+ // ensure availability of base
+ type_info * base_rtti = getRTTI(
+ (typelib_CompoundTypeDescription *)pTypeDescr->pBaseTypeDescription );
+ rtti = new __si_class_type_info(
+ strdup( rttiName ), (__class_type_info *)base_rtti );
+ }
+ else
+ {
+ // this class has no base class
+ rtti = new __class_type_info( strdup( rttiName ) );
+ }
+
+ pair< t_rtti_map::iterator, bool > insertion(
+ m_generatedRttis.insert( t_rtti_map::value_type( unoName, rtti ) ) );
+ OSL_ENSURE( insertion.second, "### inserting new generated rtti failed?!" );
+ }
+ else // taking already generated rtti
+ {
+ rtti = iFind->second;
+ }
+ }
+ }
+ else
+ {
+ rtti = iRttiFind->second;
+ }
+
+ return rtti;
+}
+
+//--------------------------------------------------------------------------------------------------
+static void deleteException( void * pExc )
+{
+ __cxa_exception const * header = ((__cxa_exception const *)pExc - 1);
+ typelib_TypeDescription * pTD = 0;
+ OUString unoName( toUNOname( header->exceptionType->name() ) );
+ ::typelib_typedescription_getByName( &pTD, unoName.pData );
+ OSL_ENSURE( pTD, "### unknown exception type! leaving out destruction => leaking!!!" );
+ if (pTD)
+ {
+ ::uno_destructData( pExc, pTD, cpp_release );
+ ::typelib_typedescription_release( pTD );
+ }
+}
+
+//==================================================================================================
+void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
+{
+ void * pCppExc;
+ type_info * rtti;
+
+ {
+ // construct cpp exception object
+ typelib_TypeDescription * pTypeDescr = 0;
+ TYPELIB_DANGER_GET( &pTypeDescr, pUnoExc->pType );
+ OSL_ASSERT( pTypeDescr );
+ if (! pTypeDescr)
+ terminate();
+
+ pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
+ ::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
+
+ // destruct uno exception
+ ::uno_any_destruct( pUnoExc, 0 );
+ // avoiding locked counts
+ static RTTI * s_rtti = 0;
+ if (! s_rtti)
+ {
+ MutexGuard guard( Mutex::getGlobalMutex() );
+ if (! s_rtti)
+ {
+#ifdef LEAK_STATIC_DATA
+ s_rtti = new RTTI();
+#else
+ static RTTI rtti_data;
+ s_rtti = &rtti_data;
+#endif
+ }
+ }
+ rtti = (type_info *)s_rtti->getRTTI( (typelib_CompoundTypeDescription *) pTypeDescr );
+ TYPELIB_DANGER_RELEASE( pTypeDescr );
+ OSL_ENSURE( rtti, "### no rtti for throwing exception!" );
+ if (! rtti)
+ terminate();
+ }
+
+ __cxa_throw( pCppExc, rtti, deleteException );
+}
+
+//==================================================================================================
+void fillUnoException( __cxa_exception * header, uno_Any * pExc, uno_Mapping * pCpp2Uno )
+{
+ OSL_ENSURE( header, "### no exception header!!!" );
+ if (! header)
+ terminate();
+
+ typelib_TypeDescription * pExcTypeDescr = 0;
+ OUString unoName( toUNOname( header->exceptionType->name() ) );
+ ::typelib_typedescription_getByName( &pExcTypeDescr, unoName.pData );
+ OSL_ENSURE( pExcTypeDescr, "### can not get type description for exception!!!" );
+ if (! pExcTypeDescr)
+ terminate();
+
+ // construct uno exception any
+ ::uno_any_constructAndConvert( pExc, header->adjustedPtr, pExcTypeDescr, pCpp2Uno );
+ ::typelib_typedescription_release( pExcTypeDescr );
+}
+
+}
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/fondu/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_alpha/makefile.mk
index b684461e0e34..2650c4376933 100644
--- a/fondu/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_linux_alpha/makefile.mk
@@ -25,45 +25,53 @@
#
#*************************************************************************
-PRJ=.
+PRJ=..$/..$/..
-PRJNAME=fondu
-TARGET=fondu
+PRJNAME=bridges
+TARGET=gcc3_uno
+LIBTARGET=no
+ENABLE_EXCEPTIONS=TRUE
# --- Settings -----------------------------------------------------
-.INCLUDE : settings.mk
+.INCLUDE : settings.mk
# --- Files --------------------------------------------------------
-TARFILE_NAME=fondu_src-051010
+.IF "$(COM)$(OS)$(CPU)" == "GCCLINUXL"
-.IF "$(OS)"!="MACOSX" || "$(GUIBASE)"=="aqua"
-dummy:
- @echo "Nothing to build for OS $(OS)"
-.ENDIF # "$(OS)"!="MACOSX" || "$(GUIBASE)"=="aqua"
+.IF "$(cppu_no_leak)" == ""
+CFLAGS += -DLEAK_STATIC_DATA
+.ENDIF
-CONFIGURE_DIR=.
+# In case someone enabled the non-standard -fomit-frame-pointer which does not
+# work with the .cxx sources in this directory:
+CFLAGSCXX += -fno-omit-frame-pointer
-#relative to CONFIGURE_DIR
-CONFIGURE_ACTION=configure
+CFLAGSNOOPT=-O0
-CONFIGURE_FLAGS=
+SLOFILES= \
+ $(SLO)$/except.obj \
+ $(SLO)$/cpp2uno.obj \
+ $(SLO)$/uno2cpp.obj
-BUILD_DIR=$(CONFIGURE_DIR)
+SHL1TARGET= $(TARGET)
-BUILD_ACTION=$(GNUMAKE) fondu
+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+SHL1IMPLIB=i$(TARGET)
+SHL1VERSIONMAP=..$/..$/bridge_exports.map
+SHL1RPATH=URELIB
-OUT2BIN=$(BUILD_DIR)$/fondu
+SHL1OBJS = $(SLOFILES)
+SHL1LIBS = $(SLB)$/cpp_uno_shared.lib
-# --- Targets ------------------------------------------------------
-
-# contains some necessary variables.
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(SALLIB)
-.INCLUDE : set_ext.mk
+.ENDIF
-.INCLUDE : target.mk
+# --- Targets ------------------------------------------------------
-# contains the "magic" to create targets out of the set variables.
+.INCLUDE : target.mk
-.INCLUDE : tg_ext.mk
diff --git a/bridges/source/cpp_uno/gcc3_linux_alpha/share.hxx b/bridges/source/cpp_uno/gcc3_linux_alpha/share.hxx
new file mode 100644
index 000000000000..c2f0189a2065
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_linux_alpha/share.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "uno/mapping.h"
+
+#include <typeinfo>
+#include <exception>
+#include <cstddef>
+
+namespace CPPU_CURRENT_NAMESPACE
+{
+
+ void dummy_can_throw_anything( char const * );
+
+
+// ----- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h
+
+struct _Unwind_Exception
+{
+ unsigned exception_class __attribute__((__mode__(__DI__)));
+ void * exception_cleanup;
+ unsigned private_1 __attribute__((__mode__(__word__)));
+ unsigned private_2 __attribute__((__mode__(__word__)));
+} __attribute__((__aligned__));
+
+struct __cxa_exception
+{
+ ::std::type_info *exceptionType;
+ void (*exceptionDestructor)(void *);
+
+ ::std::unexpected_handler unexpectedHandler;
+ ::std::terminate_handler terminateHandler;
+
+ __cxa_exception *nextException;
+
+ int handlerCount;
+
+ int handlerSwitchValue;
+ const unsigned char *actionRecord;
+ const unsigned char *languageSpecificData;
+ void *catchTemp;
+ void *adjustedPtr;
+
+ _Unwind_Exception unwindHeader;
+};
+
+extern "C" void *__cxa_allocate_exception(
+ std::size_t thrown_size ) throw();
+extern "C" void __cxa_throw (
+ void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) ) __attribute__((noreturn));
+
+struct __cxa_eh_globals
+{
+ __cxa_exception *caughtExceptions;
+ unsigned int uncaughtExceptions;
+};
+extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
+
+// -----
+
+//==================================================================================================
+void raiseException(
+ uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
+//==================================================================================================
+void fillUnoException(
+ __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
+}
+
+namespace axp
+{
+ enum axplimits { MAX_WORDS_IN_REGS = 6, MAX_GPR_REGS = 6, MAX_SSE_REGS = 6 };
+}
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_linux_alpha/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_alpha/uno2cpp.cxx
new file mode 100644
index 000000000000..7f51d425806c
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_linux_alpha/uno2cpp.cxx
@@ -0,0 +1,532 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_bridges.hxx"
+
+#include <malloc.h>
+
+#include <com/sun/star/uno/genfunc.hxx>
+#include <uno/data.h>
+
+#include "bridges/cpp_uno/shared/bridge.hxx"
+#include "bridges/cpp_uno/shared/types.hxx"
+#include "bridges/cpp_uno/shared/unointerfaceproxy.hxx"
+#include "bridges/cpp_uno/shared/vtables.hxx"
+
+#include "share.hxx"
+
+#include <stdio.h>
+#include <string.h>
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+
+void MapReturn(long r0, typelib_TypeClass eTypeClass, sal_uInt64* pRegisterReturn)
+{
+ register float fret asm("$f0");
+ register double dret asm("$f0");
+
+#ifdef CMC_DEBUG
+ fprintf(stderr,"Mapping Return with %lx %ld %f\n", r0, r0, dret);
+#endif
+ switch (eTypeClass)
+ {
+ case typelib_TypeClass_HYPER:
+ case typelib_TypeClass_UNSIGNED_HYPER:
+ *pRegisterReturn = r0;
+ break;
+ case typelib_TypeClass_LONG:
+ case typelib_TypeClass_UNSIGNED_LONG:
+ case typelib_TypeClass_ENUM:
+ *(unsigned int*)pRegisterReturn = (unsigned int)r0;
+ break;
+ case typelib_TypeClass_CHAR:
+ case typelib_TypeClass_SHORT:
+ case typelib_TypeClass_UNSIGNED_SHORT:
+ *(unsigned short*)pRegisterReturn = (unsigned short)r0;
+ break;
+ case typelib_TypeClass_BOOLEAN:
+ case typelib_TypeClass_BYTE:
+ *(unsigned char*)pRegisterReturn = (unsigned char)r0;
+ break;
+ case typelib_TypeClass_FLOAT:
+ *reinterpret_cast<float *>( pRegisterReturn ) = fret;
+ break;
+ case typelib_TypeClass_DOUBLE:
+ *reinterpret_cast<double *>( pRegisterReturn ) = dret;
+ break;
+ default:
+ break;
+ }
+#ifdef CMC_DEBUG
+ fprintf(stderr, "end of MapReturn with %x\n", pRegisterReturn ? *pRegisterReturn : 0);
+#endif
+}
+
+#define INSERT_FLOAT( pSV, nr, pFPR, pDS ) \
+ { \
+ if ( nr < axp::MAX_WORDS_IN_REGS ) \
+ { \
+ pFPR[nr++] = *reinterpret_cast<float *>( pSV ); \
+ } \
+ else \
+ *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); \
+ }
+
+#define INSERT_DOUBLE( pSV, nr, pFPR, pDS ) \
+ if ( nr < axp::MAX_WORDS_IN_REGS ) \
+ pFPR[nr++] = *reinterpret_cast<double *>( pSV ); \
+ else \
+ *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim!
+
+#define INSERT_INT64( pSV, nr, pGPR, pDS ) \
+ if ( nr < axp::MAX_WORDS_IN_REGS ) \
+ pGPR[nr++] = *reinterpret_cast<sal_uInt64 *>( pSV ); \
+ else \
+ *pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV );
+
+#define INSERT_INT32( pSV, nr, pGPR, pDS ) \
+ if ( nr < axp::MAX_WORDS_IN_REGS ) \
+ pGPR[nr++] = *reinterpret_cast<sal_uInt32 *>( pSV ); \
+ else \
+ *pDS++ = *reinterpret_cast<sal_uInt32 *>( pSV );
+
+#define INSERT_INT16( pSV, nr, pGPR, pDS ) \
+ if ( nr < axp::MAX_WORDS_IN_REGS ) \
+ pGPR[nr++] = *reinterpret_cast<sal_uInt16 *>( pSV ); \
+ else \
+ *pDS++ = *reinterpret_cast<sal_uInt16 *>( pSV );
+
+#define INSERT_INT8( pSV, nr, pGPR, pDS ) \
+ if ( nr < axp::MAX_WORDS_IN_REGS ) \
+ pGPR[nr++] = *reinterpret_cast<sal_uInt8 *>( pSV ); \
+ else \
+ *pDS++ = *reinterpret_cast<sal_uInt8 *>( pSV );
+
+namespace
+{
+//==================================================================================================
+void callVirtualMethod(
+ void * pThis, sal_Int32 nVtableIndex,
+ void * pRegisterReturn, typelib_TypeDescription * pReturnTypeDescr,
+ sal_uInt64 *pStack, sal_uInt32 nStack,
+ sal_uInt64 *pGPR, sal_uInt32 nGPR,
+ double *pFPR, sal_uInt32 nFPR)
+{
+ // Should not happen, but...
+ if ( nFPR > axp::MAX_SSE_REGS )
+ nFPR = axp::MAX_SSE_REGS;
+ if ( nGPR > axp::MAX_GPR_REGS )
+ nGPR = axp::MAX_GPR_REGS;
+
+#ifdef CMC_DEBUG
+ // Let's figure out what is really going on here
+ {
+ fprintf( stderr, "= nStack is %d\n", nStack );
+ fprintf( stderr, "= callVirtualMethod() =\nGPR's (%d): ", nGPR );
+ for ( unsigned int i = 0; i < nGPR; ++i )
+ fprintf( stderr, "0x%lx, ", pGPR[i] );
+ fprintf( stderr, "\nFPR's (%d): ", nFPR );
+ for ( unsigned int i = 0; i < nFPR; ++i )
+ fprintf( stderr, "0x%lx (%f), ", pFPR[i], pFPR[i] );
+ fprintf( stderr, "\nStack (%d): ", nStack );
+ for ( unsigned int i = 0; i < nStack; ++i )
+ fprintf( stderr, "0x%lx, ", pStack[i] );
+ fprintf( stderr, "\n" );
+ fprintf( stderr, "pRegisterReturn is %p\n", pRegisterReturn);
+ }
+#endif
+
+ // Load parameters to stack, if necessary
+ // Stack, if used, must be 8-bytes aligned
+ sal_uInt64 *stack = (sal_uInt64 *) __builtin_alloca( nStack * 8 );
+ memcpy( stack, pStack, nStack * 8 );
+
+ // To get pointer to method
+ // a) get the address of the vtable
+ sal_uInt64 pMethod = *((sal_uInt64 *)pThis);
+ // b) get the address from the vtable entry at offset
+ pMethod += 8 * nVtableIndex;
+ pMethod = *((sal_uInt64 *)pMethod);
+
+ typedef void (* FunctionCall )( sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64 );
+ FunctionCall pFunc = (FunctionCall)pMethod;
+
+ switch (nFPR) //deliberate fall through
+ {
+ case 6:
+ asm volatile("ldt $f16,%0" :: "m"(pFPR[5]) : "$f16");
+ case 5:
+ asm volatile("ldt $f17,%0" :: "m"(pFPR[4]) : "$f17");
+ case 4:
+ asm volatile("ldt $f18,%0" :: "m"(pFPR[3]) : "$f18");
+ case 3:
+ asm volatile("ldt $f19,%0" :: "m"(pFPR[2]) : "$f19");
+ case 2:
+ asm volatile("ldt $f20,%0" :: "m"(pFPR[1]) : "$f20");
+ case 1:
+ asm volatile("ldt $f21,%0" :: "m"(pFPR[0]) : "$f21");
+ default:
+ break;
+ }
+
+ (*pFunc)(pGPR[0], pGPR[1], pGPR[2], pGPR[3], pGPR[4], pGPR[5]);
+ register sal_uInt64 r0 __asm__("$0");
+ MapReturn(r0, pReturnTypeDescr->eTypeClass, (sal_uInt64*)pRegisterReturn);
+}
+
+
+//============================================================================
+static void cpp_call(
+ bridges::cpp_uno::shared::UnoInterfaceProxy * pThis,
+ bridges::cpp_uno::shared::VtableSlot aVtableSlot,
+ typelib_TypeDescriptionReference * pReturnTypeRef,
+ sal_Int32 nParams, typelib_MethodParameter * pParams,
+ void * pUnoReturn, void * pUnoArgs[], uno_Any ** ppUnoExc )
+{
+ // max space for: [complex ret ptr], values|ptr ...
+ sal_uInt64 * pStack = (sal_uInt64 *)alloca( (nParams+3) * sizeof(sal_Int64) );
+ sal_uInt64 * pStackStart = pStack;
+
+ sal_uInt64 pGPR[axp::MAX_GPR_REGS];
+ double pFPR[axp::MAX_SSE_REGS];
+ sal_uInt32 nRegs = 0;
+
+ // return
+ typelib_TypeDescription * pReturnTypeDescr = 0;
+ TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef );
+ OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" );
+
+ void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
+
+ if (pReturnTypeDescr)
+ {
+ if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
+ {
+ pCppReturn = pUnoReturn; // direct way for simple types
+ }
+ else
+ {
+ // complex return via ptr
+ pCppReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr )
+ ? alloca( pReturnTypeDescr->nSize )
+ : pUnoReturn); // direct way
+ INSERT_INT64( &pCppReturn, nRegs, pGPR, pStack );
+ }
+ }
+ // push "this" pointer
+ void * pAdjustedThisPtr = reinterpret_cast< void ** >( pThis->getCppI() ) + aVtableSlot.offset;
+
+ INSERT_INT64( &pAdjustedThisPtr, nRegs, pGPR, pStack );
+
+ // stack space
+ OSL_ENSURE( sizeof(void *) == sizeof(sal_Int64), "### unexpected size!" );
+ // args
+ void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams );
+ // indizes of values this have to be converted (interface conversion cpp<=>uno)
+ sal_Int32 * pTempIndizes = (sal_Int32 *)(pCppArgs + nParams);
+ // type descriptions for reconversions
+ typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pCppArgs + (2 * nParams));
+
+ sal_Int32 nTempIndizes = 0;
+
+ for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos )
+ {
+ const typelib_MethodParameter & rParam = pParams[nPos];
+ typelib_TypeDescription * pParamTypeDescr = 0;
+ TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef );
+
+ if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
+ {
+ uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr,
+ pThis->getBridge()->getUno2Cpp() );
+
+ switch (pParamTypeDescr->eTypeClass)
+ {
+ case typelib_TypeClass_HYPER:
+ case typelib_TypeClass_UNSIGNED_HYPER:
+ INSERT_INT64( pCppArgs[nPos], nRegs, pGPR, pStack );
+ break;
+ case typelib_TypeClass_LONG:
+ case typelib_TypeClass_UNSIGNED_LONG:
+ case typelib_TypeClass_ENUM:
+ INSERT_INT32( pCppArgs[nPos], nRegs, pGPR, pStack );
+ break;
+ case typelib_TypeClass_SHORT:
+ case typelib_TypeClass_CHAR:
+ case typelib_TypeClass_UNSIGNED_SHORT:
+ INSERT_INT16( pCppArgs[nPos], nRegs, pGPR, pStack );
+ break;
+ case typelib_TypeClass_BOOLEAN:
+ case typelib_TypeClass_BYTE:
+ INSERT_INT8( pCppArgs[nPos], nRegs, pGPR, pStack );
+ break;
+ case typelib_TypeClass_FLOAT:
+ INSERT_FLOAT( pCppArgs[nPos], nRegs, pFPR, pStack );
+ break;
+ case typelib_TypeClass_DOUBLE:
+ INSERT_DOUBLE( pCppArgs[nPos], nRegs, pFPR, pStack );
+ break;
+ default:
+ break;
+ }
+
+ // no longer needed
+ TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+ }
+ else // ptr to complex value | ref
+ {
+ if (! rParam.bIn) // is pure out
+ {
+ // cpp out is constructed mem, uno out is not!
+ uno_constructData(
+ pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
+ pParamTypeDescr );
+ pTempIndizes[nTempIndizes] = nPos; // default constructed for cpp call
+ // will be released at reconversion
+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+ }
+ // is in/inout
+ else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr ))
+ {
+ uno_copyAndConvertData(
+ pCppArgs[nPos] = alloca( pParamTypeDescr->nSize ),
+ pUnoArgs[nPos], pParamTypeDescr, pThis->getBridge()->getUno2Cpp() );
+
+ pTempIndizes[nTempIndizes] = nPos; // has to be reconverted
+ // will be released at reconversion
+ ppTempParamTypeDescr[nTempIndizes++] = pParamTypeDescr;
+ }
+ else // direct way
+ {
+ pCppArgs[nPos] = pUnoArgs[nPos];
+ // no longer needed
+ TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+ }
+ INSERT_INT64( &(pCppArgs[nPos]), nRegs, pGPR, pStack );
+ }
+ }
+
+ try
+ {
+ callVirtualMethod(
+ pAdjustedThisPtr, aVtableSlot.index,
+ pCppReturn, pReturnTypeDescr,
+ pStackStart, (pStack - pStackStart),
+ pGPR, nRegs,
+ pFPR, nRegs );
+ // NO exception occured...
+ *ppUnoExc = 0;
+
+ // reconvert temporary params
+ for ( ; nTempIndizes--; )
+ {
+ sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+ typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndizes];
+
+ if (pParams[nIndex].bIn)
+ {
+ if (pParams[nIndex].bOut) // inout
+ {
+ uno_destructData( pUnoArgs[nIndex], pParamTypeDescr, 0 ); // destroy uno value
+ uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
+ pThis->getBridge()->getCpp2Uno() );
+ }
+ }
+ else // pure out
+ {
+ uno_copyAndConvertData( pUnoArgs[nIndex], pCppArgs[nIndex], pParamTypeDescr,
+ pThis->getBridge()->getCpp2Uno() );
+ }
+ // destroy temp cpp param => cpp: every param was constructed
+ uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release );
+
+ TYPELIB_DANGER_RELEASE( pParamTypeDescr );
+ }
+ // return value
+ if (pCppReturn && pUnoReturn != pCppReturn)
+ {
+ uno_copyAndConvertData( pUnoReturn, pCppReturn, pReturnTypeDescr,
+ pThis->getBridge()->getCpp2Uno() );
+ uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
+ }
+ }
+ catch (...)
+ {
+ // fill uno exception
+ fillUnoException( CPPU_CURRENT_NAMESPACE::__cxa_get_globals()->caughtExceptions,
+ *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
+
+
+ // temporary params
+ for ( ; nTempIndizes--; )
+ {
+ sal_Int32 nIndex = pTempIndizes[nTempIndizes];
+ // destroy temp cpp param => cpp: every param was constructed
+ uno_destructData( pCppArgs[nIndex], ppTempParamTypeDescr[nTempIndizes], cpp_release );
+ TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndizes] );
+ }
+ // return type
+ if (pReturnTypeDescr)
+ TYPELIB_DANGER_RELEASE( pReturnTypeDescr );
+ }
+}
+}
+
+namespace bridges { namespace cpp_uno { namespace shared {
+
+void unoInterfaceProxyDispatch(
+ uno_Interface * pUnoI, const typelib_TypeDescription * pMemberDescr,
+ void * pReturn, void * pArgs[], uno_Any ** ppException )
+{
+#ifdef CMC_DEBUG
+ fprintf(stderr, "unoInterfaceProxyDispatch\n");
+#endif
+
+
+ // is my surrogate
+ bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
+ = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy *> (pUnoI);
+
+ switch (pMemberDescr->eTypeClass)
+ {
+ case typelib_TypeClass_INTERFACE_ATTRIBUTE:
+ {
+
+ VtableSlot aVtableSlot(
+ getVtableSlot(
+ reinterpret_cast<
+ typelib_InterfaceAttributeTypeDescription const * >(
+ pMemberDescr)));
+
+ if (pReturn)
+ {
+ // dependent dispatch
+ cpp_call(
+ pThis, aVtableSlot,
+ ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef,
+ 0, 0, // no params
+ pReturn, pArgs, ppException );
+ }
+ else
+ {
+ // is SET
+ typelib_MethodParameter aParam;
+ aParam.pTypeRef =
+ ((typelib_InterfaceAttributeTypeDescription *)pMemberDescr)->pAttributeTypeRef;
+ aParam.bIn = sal_True;
+ aParam.bOut = sal_False;
+
+ typelib_TypeDescriptionReference * pReturnTypeRef = 0;
+ OUString aVoidName( RTL_CONSTASCII_USTRINGPARAM("void") );
+ typelib_typedescriptionreference_new(
+ &pReturnTypeRef, typelib_TypeClass_VOID, aVoidName.pData );
+
+ // dependent dispatch
+ aVtableSlot.index += 1; //get then set method
+ cpp_call(
+ pThis, aVtableSlot,
+ pReturnTypeRef,
+ 1, &aParam,
+ pReturn, pArgs, ppException );
+
+ typelib_typedescriptionreference_release( pReturnTypeRef );
+ }
+
+ break;
+ }
+ case typelib_TypeClass_INTERFACE_METHOD:
+ {
+
+ VtableSlot aVtableSlot(
+ getVtableSlot(
+ reinterpret_cast<
+ typelib_InterfaceMethodTypeDescription const * >(
+ pMemberDescr)));
+ switch (aVtableSlot.index)
+ {
+ // standard calls
+ case 1: // acquire uno interface
+ (*pUnoI->acquire)( pUnoI );
+ *ppException = 0;
+ break;
+ case 2: // release uno interface
+ (*pUnoI->release)( pUnoI );
+ *ppException = 0;
+ break;
+ case 0: // queryInterface() opt
+ {
+ typelib_TypeDescription * pTD = 0;
+ TYPELIB_DANGER_GET( &pTD, reinterpret_cast< Type * >( pArgs[0] )->getTypeLibType() );
+ if (pTD)
+ {
+ uno_Interface * pInterface = 0;
+ (*pThis->pBridge->getUnoEnv()->getRegisteredInterface)(
+ pThis->pBridge->getUnoEnv(),
+ (void **)&pInterface, pThis->oid.pData, (typelib_InterfaceTypeDescription *)pTD );
+
+ if (pInterface)
+ {
+ ::uno_any_construct(
+ reinterpret_cast< uno_Any * >( pReturn ),
+ &pInterface, pTD, 0 );
+ (*pInterface->release)( pInterface );
+ TYPELIB_DANGER_RELEASE( pTD );
+ *ppException = 0;
+ break;
+ }
+ TYPELIB_DANGER_RELEASE( pTD );
+ }
+ } // else perform queryInterface()
+ default:
+ // dependent dispatch
+ cpp_call(
+ pThis, aVtableSlot,
+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pReturnTypeRef,
+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->nParams,
+ ((typelib_InterfaceMethodTypeDescription *)pMemberDescr)->pParams,
+ pReturn, pArgs, ppException );
+ }
+ break;
+ }
+ default:
+ {
+ ::com::sun::star::uno::RuntimeException aExc(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("illegal member type description!") ),
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >() );
+
+ Type const & rExcType = ::getCppuType( &aExc );
+ // binary identical null reference
+ ::uno_type_any_construct( *ppException, &aExc, rExcType.getTypeLibType(), 0 );
+ }
+ }
+}
+
+} } }
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx
index 8b37b633f59e..959452b4d985 100644
--- a/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_hppa/cpp2uno.cxx
@@ -61,7 +61,7 @@ namespace
long r8, void ** gpreg, double *fpreg, void ** ovrflw,
sal_Int64 * pRegisterReturn /* space for register return */ )
{
- void ** startovrflw;
+ void ** startovrflw = ovrflw;
int nregs = 0; //number of words passed in registers
#ifdef CMC_DEBUG
@@ -143,7 +143,7 @@ namespace
}
else
{
- if ((startovrflw-ovrflw) & 4)
+ if ((startovrflw-ovrflw) & 1)
ovrflw--;
pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)ovrflw - 4);
bOverFlowUsed = true;
@@ -182,7 +182,7 @@ namespace
}
else
{
- if ((startovrflw-ovrflw) & 4)
+ if ((startovrflw-ovrflw) & 1)
ovrflw--;
pCppArgs[nPos] = pUnoArgs[nPos] = ((char*)ovrflw - 4);
bOverFlowUsed = true;
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
index 50cf80654a94..d5eb2dd6e1d9 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/makefile.mk
@@ -77,8 +77,5 @@ SHL1STDLIBS= \
.INCLUDE : target.mk
$(SLO)$/%.obj: %.s
-#cmc: Ideally --noexecstack would be in operations, but with #i51385# pyuno
-#remote bridgeing breaks
-# $(CC) -Wa,--noexecstack -c -o $(SLO)$/$(@:b).o $<
$(CC) -c -o $(SLO)$/$(@:b).o $<
touch $@
diff --git a/bridges/source/cpp_uno/gcc3_macosx_intel/makefile.mk b/bridges/source/cpp_uno/gcc3_macosx_intel/makefile.mk
index 92d575a14dfb..7bca40bbaf97 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_intel/makefile.mk
+++ b/bridges/source/cpp_uno/gcc3_macosx_intel/makefile.mk
@@ -72,8 +72,5 @@ SHL1STDLIBS= \
.INCLUDE : target.mk
$(SLO)$/%.obj: %.s
-#cmc: Ideally --noexecstack would be in operations, but with #i51385# pyuno
-#remote bridgeing breaks
-# $(CC) -Wa,--noexecstack -c -o $(SLO)$/$(@:b).o $<
$(CC) -c -o $(SLO)$/$(@:b).o $<
touch $@
diff --git a/bridges/source/cpp_uno/mingw_intel/makefile.mk b/bridges/source/cpp_uno/mingw_intel/makefile.mk
index a23288f9f677..2c7a8da48527 100644
--- a/bridges/source/cpp_uno/mingw_intel/makefile.mk
+++ b/bridges/source/cpp_uno/mingw_intel/makefile.mk
@@ -87,8 +87,5 @@ DEF1NAME= $(SHL1TARGET)
.INCLUDE : target.mk
$(SLO)$/%.obj: %.s
-#cmc: Ideally --noexecstack would be in operations, but with #i51385# pyuno
-#remote bridgeing breaks
-# $(CC) -Wa,--noexecstack -c -o $(SLO)$/$(@:b).o $<
$(CC) -c -o $(SLO)$/$(@:b).obj $<
touch $@
diff --git a/bridges/source/remote/urp/urp_job.hxx b/bridges/source/remote/urp/urp_job.hxx
index f0e338e4728c..ce58b1f3f779 100644
--- a/bridges/source/remote/urp/urp_job.hxx
+++ b/bridges/source/remote/urp/urp_job.hxx
@@ -76,9 +76,6 @@ public:
~Job();
- inline void setUnmarshal( Unmarshal *p )
- { m_pUnmarshal = p; }
-
public:
remote_Context *m_pContext;
Unmarshal *m_pUnmarshal;
@@ -87,7 +84,7 @@ public:
::bridges_remote::RemoteThreadCounter m_counter;
};
-class ClientJob : public Job
+class ClientJob : private Job
{
public:
// pContext is null for bridge-internal UrpProtocolProperties requests
@@ -123,6 +120,9 @@ public:
{ return m_bBridgePropertyCall; }
inline sal_Bool isOneway()
{ return m_bOneway; }
+
+ inline void setUnmarshal( Unmarshal *p )
+ { m_pUnmarshal = p; }
public:
typelib_InterfaceMethodTypeDescription *m_pMethodType;
typelib_InterfaceAttributeTypeDescription *m_pAttributeType;
@@ -172,7 +172,7 @@ struct ServerJobEntry
sal_Bool m_bIgnoreCache;
};
-class ServerMultiJob : public Job
+class ServerMultiJob : private Job
{
public:
ServerMultiJob( uno_Environment *pEnvRemote,
diff --git a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx
index 253699f4595c..062dcc1a129d 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx
@@ -303,7 +303,9 @@ ChartDataWrapper::ChartDataWrapper( ::boost::shared_ptr< Chart2ModelContact > sp
m_spChart2ModelContact( spChart2ModelContact ),
m_aEventListenerContainer( m_aMutex )
{
+ osl_incrementInterlockedCount( &m_refCount );
initDataAccess();
+ osl_decrementInterlockedCount( &m_refCount );
}
ChartDataWrapper::ChartDataWrapper( ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact,
@@ -311,8 +313,10 @@ ChartDataWrapper::ChartDataWrapper( ::boost::shared_ptr< Chart2ModelContact > sp
m_spChart2ModelContact( spChart2ModelContact ),
m_aEventListenerContainer( m_aMutex )
{
+ osl_incrementInterlockedCount( &m_refCount );
lcl_AllOperator aOperator( xNewData );
applyData( aOperator );
+ osl_decrementInterlockedCount( &m_refCount );
}
ChartDataWrapper::~ChartDataWrapper()
@@ -482,7 +486,8 @@ void ChartDataWrapper::fireChartDataChangeEvent(
uno::Reference<
::com::sun::star::chart::XChartDataChangeEventListener > xListener(
aIter.next(), uno::UNO_QUERY );
- xListener->chartDataChanged( aEvent );
+ if( xListener.is() )
+ xListener->chartDataChanged( aEvent );
}
}
@@ -547,6 +552,7 @@ void ChartDataWrapper::applyData( lcl_Operator& rDataOperator )
if( !bHasCategories && rDataOperator.setsCategories( bUseColumns ) )
bHasCategories = true;
+ aRangeString = C2U("all");
uno::Sequence< beans::PropertyValue > aArguments( DataSourceHelper::createArguments(
aRangeString, aSequenceMapping, bUseColumns, bFirstCellAsLabel, bHasCategories ) );
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 7822c8c1cc21..6049be7e3199 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -774,6 +774,7 @@ void ChartController::execute_Tracking( const TrackingEvent& /* rTEvt */ )
void ChartController::execute_MouseButtonUp( const MouseEvent& rMEvt )
{
ControllerLockGuard aCLGuard( m_aModel->getModel());
+ bool bMouseUpWithoutMouseDown = !m_bWaitingForMouseUp;
m_bWaitingForMouseUp = false;
bool bNotifySelectionChange = false;
{
@@ -907,9 +908,8 @@ void ChartController::execute_MouseButtonUp( const MouseEvent& rMEvt )
else
m_aSelection.resetPossibleSelectionAfterSingleClickWasEnsured();
}
- else if( isDoubleClick(rMEvt) )
+ else if( isDoubleClick(rMEvt) && !bMouseUpWithoutMouseDown /*#i106966#*/ )
{
- // #i12587# support for shapes in chart
Point aMousePixel = rMEvt.GetPosPixel();
execute_DoubleClick( &aMousePixel );
}
@@ -1714,7 +1714,11 @@ bool ChartController::requestQuickHelp(
lang::EventObject aEvent( xSelectionSupplier );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< view::XSelectionChangeListener*>(aIt.next()))->selectionChanged( aEvent );
+ {
+ uno::Reference< view::XSelectionChangeListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->selectionChanged( aEvent );
+ }
}
}
diff --git a/chart2/source/controller/main/ShapeToolbarController.cxx b/chart2/source/controller/main/ShapeToolbarController.cxx
index a8a6cfba20ff..9c6ed747e1d5 100644
--- a/chart2/source/controller/main/ShapeToolbarController.cxx
+++ b/chart2/source/controller/main/ShapeToolbarController.cxx
@@ -56,7 +56,7 @@ namespace chart
::rtl::OUString ShapeToolbarController::getImplementationName_Static() throw (uno::RuntimeException)
{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.chart2.comp.ShapeToolbarController" ) );
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart2.ShapeToolbarController" ) );
}
Sequence< ::rtl::OUString > ShapeToolbarController::getSupportedServiceNames_Static() throw (uno::RuntimeException)
diff --git a/chart2/source/controller/main/UndoManager.cxx b/chart2/source/controller/main/UndoManager.cxx
index 34157503e629..21e27922b1c8 100644
--- a/chart2/source/controller/main/UndoManager.cxx
+++ b/chart2/source/controller/main/UndoManager.cxx
@@ -108,7 +108,11 @@ void ModifyBroadcaster::fireEvent()
lang::EventObject aEvent( static_cast< lang::XComponent* >( this ) );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< util::XModifyListener*>(aIt.next()))->modified( aEvent );
+ {
+ uno::Reference< util::XModifyListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->modified( aEvent );
+ }
}
}
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx
index dc0931f41fc4..2a34844c169d 100644
--- a/chart2/source/model/main/ChartModel.cxx
+++ b/chart2/source/model/main/ChartModel.cxx
@@ -230,7 +230,11 @@ void SAL_CALL ChartModel::impl_notifyCloseListeners()
lang::EventObject aEvent( static_cast< lang::XComponent*>(this) );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< util::XCloseListener*>(aIt.next()))->notifyClosing( aEvent );
+ {
+ uno::Reference< util::XCloseListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->notifyClosing( aEvent );
+ }
}
}
diff --git a/chart2/source/model/main/ChartModel_Persistence.cxx b/chart2/source/model/main/ChartModel_Persistence.cxx
index 4f864ae0fd1c..113be99915cb 100644
--- a/chart2/source/model/main/ChartModel_Persistence.cxx
+++ b/chart2/source/model/main/ChartModel_Persistence.cxx
@@ -697,7 +697,11 @@ void SAL_CALL ChartModel::impl_notifyModifiedListeners()
lang::EventObject aEvent( static_cast< lang::XComponent*>(this) );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< util::XModifyListener*>(aIt.next()))->modified( aEvent );
+ {
+ uno::Reference< util::XModifyListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->modified( aEvent );
+ }
}
}
@@ -827,8 +831,11 @@ void SAL_CALL ChartModel::impl_notifyStorageChangeListeners()
{
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< document::XStorageChangeListener* >(aIt.next()))->notifyStorageChange(
- static_cast< ::cppu::OWeakObject* >( this ), m_xStorage );
+ {
+ uno::Reference< document::XStorageChangeListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->notifyStorageChange( static_cast< ::cppu::OWeakObject* >( this ), m_xStorage );
+ }
}
}
diff --git a/chart2/source/model/main/DataSeries.cxx b/chart2/source/model/main/DataSeries.cxx
index 4faca33e936c..bdb46665004f 100644
--- a/chart2/source/model/main/DataSeries.cxx
+++ b/chart2/source/model/main/DataSeries.cxx
@@ -116,13 +116,6 @@ void lcl_CloneAttributedDataPoints(
}
}
-bool lcl_isInternalData( const Reference< chart2::data::XLabeledDataSequence > & xLSeq )
-{
- Reference< lang::XServiceInfo > xServiceInfo( xLSeq, uno::UNO_QUERY );
- return ( xServiceInfo.is() && xServiceInfo->getImplementationName().equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM("com.sun.star.comp.chart2.LabeledDataSequence")));
-}
-
} // anonymous namespace
// ----------------------------------------
@@ -146,11 +139,8 @@ DataSeries::DataSeries( const DataSeries & rOther ) :
{
if( ! rOther.m_aDataSequences.empty())
{
- if( lcl_isInternalData( rOther.m_aDataSequences.front()))
- CloneHelper::CloneRefVector< tDataSequenceContainer::value_type >(
- rOther.m_aDataSequences, m_aDataSequences );
- else
- m_aDataSequences = rOther.m_aDataSequences;
+ CloneHelper::CloneRefVector< tDataSequenceContainer::value_type >(
+ rOther.m_aDataSequences, m_aDataSequences );
ModifyListenerHelper::addListenerToAllElements( m_aDataSequences, m_xModifyEventForwarder );
}
diff --git a/chart2/source/model/template/ChartTypeTemplate.cxx b/chart2/source/model/template/ChartTypeTemplate.cxx
index 393321a19d55..e3943e9eb45f 100644
--- a/chart2/source/model/template/ChartTypeTemplate.cxx
+++ b/chart2/source/model/template/ChartTypeTemplate.cxx
@@ -86,7 +86,7 @@ void lcl_applyDefaultStyle(
void lcl_ensureCorrectLabelPlacement( const Reference< beans::XPropertySet >& xProp, const uno::Sequence < sal_Int32 >& rAvailablePlacements )
{
sal_Int32 nLabelPlacement=0;
- if( xProp->getPropertyValue( C2U( "LabelPlacement" ) ) >>= nLabelPlacement )
+ if( xProp.is() && (xProp->getPropertyValue( C2U( "LabelPlacement" ) ) >>= nLabelPlacement) )
{
bool bValid = false;
for( sal_Int32 nN = 0; nN < rAvailablePlacements.getLength(); nN++ )
@@ -112,7 +112,7 @@ void lcl_resetLabelPlacementIfDefault( const Reference< beans::XPropertySet >& x
{
sal_Int32 nLabelPlacement=0;
- if( xProp->getPropertyValue( C2U( "LabelPlacement" ) ) >>= nLabelPlacement )
+ if( xProp.is() && (xProp->getPropertyValue( C2U( "LabelPlacement" ) ) >>= nLabelPlacement) )
{
if( nDefaultPlacement == nLabelPlacement )
xProp->setPropertyValue( C2U("LabelPlacement"), uno::Any() );
diff --git a/chart2/source/tools/LifeTime.cxx b/chart2/source/tools/LifeTime.cxx
index 68ed06208d11..38aa07718d4a 100644
--- a/chart2/source/tools/LifeTime.cxx
+++ b/chart2/source/tools/LifeTime.cxx
@@ -371,7 +371,11 @@ CloseableLifeTimeManager::~CloseableLifeTimeManager()
lang::EventObject aEvent( xCloseable );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< util::XCloseListener*>(aIt.next()))->notifyClosing( aEvent );
+ {
+ uno::Reference< util::XCloseListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->notifyClosing( aEvent );
+ }
}
}
}
diff --git a/chart2/source/tools/RangeHighlighter.cxx b/chart2/source/tools/RangeHighlighter.cxx
index 20359bfa6b4c..1565344923b1 100644
--- a/chart2/source/tools/RangeHighlighter.cxx
+++ b/chart2/source/tools/RangeHighlighter.cxx
@@ -348,7 +348,11 @@ void RangeHighlighter::fireSelectionEvent()
lang::EventObject aEvent( static_cast< lang::XComponent* >( this ) );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< view::XSelectionChangeListener*>(aIt.next()))->selectionChanged( aEvent );
+ {
+ uno::Reference< view::XSelectionChangeListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->selectionChanged( aEvent );
+ }
}
}
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index caadaa554091..8ec895fbd452 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -451,7 +451,7 @@ void VCartesianAxis::createAllTickInfosFromComplexCategories( ::std::vector< ::s
sal_Int32 nCount = aCat.Count;
if( nCatIndex + 0.5 + nCount >= m_aScale.Maximum )
{
- nCount = m_aScale.Maximum - 0.5 - nCatIndex;
+ nCount = static_cast<sal_Int32>(m_aScale.Maximum - 0.5 - nCatIndex);
if( nCount <= 0 )
nCount = 1;
}
@@ -1519,7 +1519,7 @@ void SAL_CALL VCartesianAxis::createShapes()
::std::vector<TickmarkProperties> aTickmarkPropertiesList;
static bool bIncludeSpaceBetweenTickAndText = false;
- sal_Int32 nOffset = pTickmarkHelper2D->getDistanceAxisTickToText( m_aAxisProperties, false, bIncludeSpaceBetweenTickAndText ).getLength();
+ sal_Int32 nOffset = static_cast<sal_Int32>(pTickmarkHelper2D->getDistanceAxisTickToText( m_aAxisProperties, false, bIncludeSpaceBetweenTickAndText ).getLength());
sal_Int32 nTextLevelCount = getTextLevelCount();
for( sal_Int32 nTextLevel=0; nTextLevel<nTextLevelCount; nTextLevel++ )
{
@@ -1527,7 +1527,7 @@ void SAL_CALL VCartesianAxis::createShapes()
if( apTickIter.get() )
{
B2DVector aLabelsDistance( lcl_getLabelsDistance( *apTickIter.get(), pTickmarkHelper2D->getDistanceAxisTickToText( m_aAxisProperties, false ) ) );
- sal_Int32 nCurrentLength = aLabelsDistance.getLength();
+ sal_Int32 nCurrentLength = static_cast<sal_Int32>(aLabelsDistance.getLength());
aTickmarkPropertiesList.push_back( m_aAxisProperties.makeTickmarkPropertiesForComplexCategories( nOffset + nCurrentLength, 0, nTextLevel ) );
nOffset += nCurrentLength;
}
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 549ef0273595..c5ba0c38ab05 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -2829,7 +2829,11 @@ void ChartView::impl_notifyModeChangeListener( const rtl::OUString& rNewMode )
util::ModeChangeEvent aEvent( static_cast< uno::XWeak* >( this ), rNewMode );
::cppu::OInterfaceIteratorHelper aIt( *pIC );
while( aIt.hasMoreElements() )
- (static_cast< util::XModeChangeListener*>(aIt.next()))->modeChanged( aEvent );
+ {
+ uno::Reference< util::XModeChangeListener > xListener( aIt.next(), uno::UNO_QUERY );
+ if( xListener.is() )
+ xListener->modeChanged( aEvent );
+ }
}
}
catch( uno::Exception& ex)
diff --git a/chart2/source/view/main/VLegend.cxx b/chart2/source/view/main/VLegend.cxx
index f0bcc12c0440..7101a984ee24 100644
--- a/chart2/source/view/main/VLegend.cxx
+++ b/chart2/source/view/main/VLegend.cxx
@@ -714,11 +714,16 @@ void VLegend::createShapes(
LegendExpansion eExpansion = LegendExpansion_HIGH;
if( xLegendProp.is())
{
- lcl_getProperties( xLegendProp, aLineFillProperties, aTextProperties, nMaxLabelWidth,
- rPageSize );
-
// get Expansion property
xLegendProp->getPropertyValue( C2U( "Expansion" )) >>= eExpansion;
+ if( eExpansion == LegendExpansion_WIDE )
+ {
+ //#i80377#
+ nMaxLabelWidth = (rAvailableSpace.Width * 5) / 6;//completely correct would be available width minus symbol size minus distances to page ...
+ }
+
+ lcl_getProperties( xLegendProp, aLineFillProperties, aTextProperties, nMaxLabelWidth,
+ rPageSize );
}
if( xBorder.is())
diff --git a/configmgr/inc/configmgr/update.hxx b/configmgr/inc/configmgr/update.hxx
index b27a32487400..3a152959342b 100644
--- a/configmgr/inc/configmgr/update.hxx
+++ b/configmgr/inc/configmgr/update.hxx
@@ -30,6 +30,8 @@
#include "sal/config.h"
+#include <set>
+
#include "configmgr/detail/configmgrdllapi.hxx"
namespace rtl { class OUString; }
@@ -44,6 +46,11 @@ OOO_DLLPUBLIC_CONFIGMGR void insertExtensionXcsFile(
OOO_DLLPUBLIC_CONFIGMGR void insertExtensionXcuFile(
bool shared, rtl::OUString const & fileUri);
+OOO_DLLPUBLIC_CONFIGMGR void insertModificationXcuFile(
+ rtl::OUString const & fileUri,
+ std::set< rtl::OUString > const & includedPaths,
+ std::set< rtl::OUString > const & excludedPaths);
+
}
}
diff --git a/configmgr/source/README b/configmgr/source/README
index 6d19a3b78610..b731043d34ed 100644
--- a/configmgr/source/README
+++ b/configmgr/source/README
@@ -76,6 +76,7 @@ update.cxx
data.cxx
lock.cxx
nodemap.cxx
+partial.cxx
path.hxx
type.cxx
Utilities.
diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx
index 51a1a6547d9b..6d97971e1a2c 100644
--- a/configmgr/source/components.cxx
+++ b/configmgr/source/components.cxx
@@ -46,6 +46,7 @@
#include "osl/diagnose.h"
#include "osl/file.hxx"
#include "rtl/bootstrap.hxx"
+#include "rtl/logfile.h"
#include "rtl/ref.hxx"
#include "rtl/string.h"
#include "rtl/textenc.h"
@@ -58,6 +59,7 @@
#include "modifications.hxx"
#include "node.hxx"
#include "parsemanager.hxx"
+#include "partial.hxx"
#include "rootaccess.hxx"
#include "writemodfile.hxx"
#include "xcdparser.hxx"
@@ -82,26 +84,29 @@ struct UnresolvedListItem {
typedef std::list< UnresolvedListItem > UnresolvedList;
-void parseXcsFile(rtl::OUString const & url, int layer, Data * data,
+void parseXcsFile(
+ rtl::OUString const & url, int layer, Data & data, Partial const * partial,
Modifications * modifications)
SAL_THROW((
css::container::NoSuchElementException, css::uno::RuntimeException))
{
- OSL_ASSERT(modifications == 0); (void) modifications;
+ OSL_ASSERT(partial == 0 && modifications == 0);
+ (void) partial; (void) modifications;
OSL_VERIFY(
rtl::Reference< ParseManager >(
new ParseManager(url, new XcsParser(layer, data)))->parse());
}
void parseXcuFile(
- rtl::OUString const & url, int layer, Data * data,
+ rtl::OUString const & url, int layer, Data & data, Partial const * partial,
Modifications * modifications)
SAL_THROW((
css::container::NoSuchElementException, css::uno::RuntimeException))
{
OSL_VERIFY(
rtl::Reference< ParseManager >(
- new ParseManager(url, new XcuParser(layer, data, modifications)))->
+ new ParseManager(
+ url, new XcuParser(layer, data, partial, modifications)))->
parse());
}
@@ -112,7 +117,7 @@ rtl::OUString expand(rtl::OUString const & str) {
}
static bool singletonCreated = false;
-static Components * singleton; // leaks
+static Components * singleton = 0;
}
@@ -122,7 +127,8 @@ void Components::initSingleton(
OSL_ASSERT(context.is());
if (!singletonCreated) {
singletonCreated = true;
- singleton = new Components(context);
+ static Components theSingleton(context);
+ singleton = &theSingleton;
}
}
@@ -211,7 +217,7 @@ void Components::insertExtensionXcsFile(
bool shared, rtl::OUString const & fileUri)
{
try {
- parseXcsFile(fileUri, shared ? 9 : 13, &data_, 0);
+ parseXcsFile(fileUri, shared ? 9 : 13, data_, 0, 0);
} catch (css::container::NoSuchElementException & e) {
throw css::uno::RuntimeException(
(rtl::OUString(
@@ -227,7 +233,7 @@ void Components::insertExtensionXcuFile(
{
OSL_ASSERT(modifications != 0);
try {
- parseXcuFile(fileUri, shared ? 10 : 14, &data_, modifications);
+ parseXcuFile(fileUri, shared ? 10 : 14, data_, 0, modifications);
} catch (css::container::NoSuchElementException & e) {
throw css::uno::RuntimeException(
(rtl::OUString(
@@ -238,6 +244,24 @@ void Components::insertExtensionXcuFile(
}
}
+void Components::insertModificationXcuFile(
+ rtl::OUString const & fileUri,
+ std::set< rtl::OUString > const & includedPaths,
+ std::set< rtl::OUString > const & excludedPaths,
+ Modifications * modifications)
+{
+ OSL_ASSERT(modifications != 0);
+ try {
+ Partial part(includedPaths, excludedPaths);
+ parseXcuFile(fileUri, Data::NO_LAYER, data_, &part, modifications);
+ } catch (css::uno::Exception & e) { //TODO: more specific exception catching
+ OSL_TRACE(
+ "configmgr error inserting %s: %s",
+ rtl::OUStringToOString(fileUri, RTL_TEXTENCODING_UTF8).getStr(),
+ rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr());
+ }
+}
+
css::beans::Optional< css::uno::Any > Components::getExternalValue(
rtl::OUString const & descriptor)
{
@@ -315,7 +339,7 @@ Components::Components(
context_(context)
{
OSL_ASSERT(context.is());
-/*SB*/try{
+ RTL_LOGFILE_TRACE_AUTHOR("configmgr", "sb", "begin parsing");
parseXcsXcuLayer(
0,
expand(
@@ -380,24 +404,22 @@ Components::Components(
":UNO_USER_PACKAGES_CACHE}/registry/"
"com.sun.star.comp.deployment.configuration."
"PackageRegistryBackend/configmgr.ini"))));
-/*SB*/}catch(css::uno::Exception&e){fprintf(stderr,"caught <%s>\n",rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_UTF8).getStr());throw;}
try {
parseModificationLayer();
} catch (css::uno::Exception & e) { //TODO: more specific exception catching
- // Silently ignore unreadable parts of a corrupted
- // registrymodifications.xcu file, instead of completely preventing OOo
- // from starting:
+ // Silently ignore unreadable parts of a corrupted user modification
+ // layer, instead of completely preventing OOo from starting:
OSL_TRACE(
"configmgr error reading user modification layer: %s",
rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr());
}
+ RTL_LOGFILE_TRACE_AUTHOR("configmgr", "sb", "end parsing");
}
Components::~Components() {}
void Components::parseFiles(
- int layer, rtl::OUString const & extension,
- void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *),
+ int layer, rtl::OUString const & extension, FileParser * parseFile,
rtl::OUString const & url, bool recursive)
{
osl::Directory dir(url);
@@ -447,7 +469,7 @@ void Components::parseFiles(
file.match(extension, file.getLength() - extension.getLength()))
{
try {
- (*parseFile)(stat.getFileURL(), layer, &data_, 0);
+ (*parseFile)(stat.getFileURL(), layer, data_, 0, 0);
} catch (css::container::NoSuchElementException & e) {
throw css::uno::RuntimeException(
(rtl::OUString(
@@ -462,16 +484,15 @@ void Components::parseFiles(
}
void Components::parseFileList(
- int layer,
- void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *),
- rtl::OUString const & urls, rtl::Bootstrap const & ini)
+ int layer, FileParser * parseFile, rtl::OUString const & urls,
+ rtl::Bootstrap const & ini)
{
for (sal_Int32 i = 0;;) {
rtl::OUString url(urls.getToken(0, ' ', i));
if (url.getLength() != 0) {
ini.expandMacrosFrom(url); //TODO: detect failure
try {
- (*parseFile)(url, layer, &data_, 0);
+ (*parseFile)(url, layer, data_, 0, 0);
} catch (css::container::NoSuchElementException & e) {
throw css::uno::RuntimeException(
(rtl::OUString(
@@ -539,7 +560,7 @@ void Components::parseXcdFiles(int layer, rtl::OUString const & url) {
rtl::Reference< ParseManager > manager;
try {
manager = new ParseManager(
- stat.getFileURL(), new XcdParser(layer, deps, &data_));
+ stat.getFileURL(), new XcdParser(layer, deps, data_));
} catch (css::container::NoSuchElementException & e) {
throw css::uno::RuntimeException(
(rtl::OUString(
@@ -630,7 +651,7 @@ rtl::OUString Components::getModificationFileUrl() const {
void Components::parseModificationLayer() {
try {
- parseXcuFile(getModificationFileUrl(), Data::NO_LAYER, &data_, 0);
+ parseXcuFile(getModificationFileUrl(), Data::NO_LAYER, data_, 0, 0);
} catch (css::container::NoSuchElementException &) {
OSL_TRACE(
"configmgr user registrymodifications.xcu does not (yet) exist");
diff --git a/configmgr/source/components.hxx b/configmgr/source/components.hxx
index 8523b02cbbaf..a78ed325969d 100644
--- a/configmgr/source/components.hxx
+++ b/configmgr/source/components.hxx
@@ -58,6 +58,7 @@ namespace configmgr {
class Broadcaster;
class Modifications;
class Node;
+class Partial;
class RootAccess;
class Components: private boost::noncopyable {
@@ -96,10 +97,19 @@ public:
bool shared, rtl::OUString const & fileUri,
Modifications * modifications);
+ void insertModificationXcuFile(
+ rtl::OUString const & fileUri,
+ std::set< rtl::OUString > const & includedPaths,
+ std::set< rtl::OUString > const & excludedPaths,
+ Modifications * modifications);
+
com::sun::star::beans::Optional< com::sun::star::uno::Any >
getExternalValue(rtl::OUString const & descriptor);
private:
+ typedef void FileParser(
+ rtl::OUString const &, int, Data &, Partial const *, Modifications *);
+
Components(
com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
const & context);
@@ -107,14 +117,12 @@ private:
~Components();
void parseFiles(
- int layer, rtl::OUString const & extension,
- void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *),
+ int layer, rtl::OUString const & extension, FileParser * parseFile,
rtl::OUString const & url, bool recursive);
void parseFileList(
- int layer,
- void (* parseFile)(rtl::OUString const &, int, Data *, Modifications *),
- rtl::OUString const & urls, rtl::Bootstrap const & ini);
+ int layer, FileParser * parseFile, rtl::OUString const & urls,
+ rtl::Bootstrap const & ini);
void parseXcdFiles(int layer, rtl::OUString const & url);
diff --git a/configmgr/source/makefile.mk b/configmgr/source/makefile.mk
index d6972e12b9d8..317e08bdf49c 100644
--- a/configmgr/source/makefile.mk
+++ b/configmgr/source/makefile.mk
@@ -54,6 +54,7 @@ SLOFILES = \
$(SLO)/nodemap.obj \
$(SLO)/pad.obj \
$(SLO)/parsemanager.obj \
+ $(SLO)/partial.obj \
$(SLO)/propertynode.obj \
$(SLO)/rootaccess.obj \
$(SLO)/services.obj \
diff --git a/configmgr/source/partial.cxx b/configmgr/source/partial.cxx
new file mode 100644
index 000000000000..4c9189ed05c4
--- /dev/null
+++ b/configmgr/source/partial.cxx
@@ -0,0 +1,137 @@
+/*************************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+************************************************************************/
+
+#include "precompiled_configmgr.hxx"
+#include "sal/config.h"
+
+#include <map>
+#include <set>
+
+#include "com/sun/star/uno/Reference.hxx"
+#include "com/sun/star/uno/RuntimeException.hpp"
+#include "com/sun/star/uno/XInterface.hpp"
+#include "osl/diagnose.h"
+#include "rtl/ustring.h"
+#include "rtl/ustring.hxx"
+#include "sal/types.h"
+
+#include "data.hxx"
+#include "partial.hxx"
+
+namespace configmgr {
+
+namespace {
+
+namespace css = com::sun::star;
+
+bool parseSegment(
+ rtl::OUString const & path, sal_Int32 * index, rtl::OUString * segment)
+{
+ OSL_ASSERT(
+ index != 0 && *index >= 0 && *index <= path.getLength() &&
+ segment != 0);
+ if (path[(*index)++] == '/') {
+ rtl::OUString name;
+ bool setElement;
+ rtl::OUString templateName;
+ *index = Data::parseSegment(
+ path, *index, &name, &setElement, &templateName);
+ if (*index != -1) {
+ *segment = Data::createSegment(templateName, name);
+ return *index == path.getLength();
+ }
+ }
+ throw css::uno::RuntimeException(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("bad path ")) + path,
+ css::uno::Reference< css::uno::XInterface >());
+}
+
+}
+
+Partial::Partial(
+ std::set< rtl::OUString > const & includedPaths,
+ std::set< rtl::OUString > const & excludedPaths)
+{
+ for (std::set< rtl::OUString >::const_iterator i(includedPaths.begin());
+ i != includedPaths.end(); ++i)
+ {
+ sal_Int32 n = 0;
+ for (Node * p = &root_;;) {
+ rtl::OUString seg;
+ bool end = parseSegment(*i, &n, &seg);
+ p = &p->children[seg];
+ if (p->startInclude) {
+ break;
+ }
+ if (end) {
+ p->children.clear();
+ p->startInclude = true;
+ break;
+ }
+ }
+ }
+ for (std::set< rtl::OUString >::const_iterator i(excludedPaths.begin());
+ i != excludedPaths.end(); ++i)
+ {
+ sal_Int32 n = 0;
+ for (Node * p = &root_;;) {
+ rtl::OUString seg;
+ bool end = parseSegment(*i, &n, &seg);
+ if (end) {
+ p->children[seg] = Node();
+ break;
+ }
+ Node::Children::iterator j(p->children.find(seg));
+ if (j == p->children.end()) {
+ break;
+ }
+ p = &j->second;
+ }
+ }
+}
+
+Partial::~Partial() {}
+
+Partial::Containment Partial::contains(Path const & path) const {
+ //TODO: For set elements, the segment names recorded in the node tree need
+ // not match the corresponding path segments, so this function can fail.
+ Node const * p = &root_;
+ bool includes = false;
+ for (Path::const_iterator i(path.begin()); i != path.end(); ++i) {
+ Node::Children::const_iterator j(p->children.find(*i));
+ if (j == p->children.end()) {
+ break;
+ }
+ p = &j->second;
+ includes |= p->startInclude;
+ }
+ return p->children.empty() && !p->startInclude
+ ? CONTAINS_NOT
+ : includes ? CONTAINS_NODE : CONTAINS_SUBNODES;
+}
+
+}
diff --git a/configmgr/source/partial.hxx b/configmgr/source/partial.hxx
new file mode 100644
index 000000000000..39931448c66d
--- /dev/null
+++ b/configmgr/source/partial.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+************************************************************************/
+
+#ifndef INCLUDED_CONFIGMGR_SOURCE_PARTIAL_HXX
+#define INCLUDED_CONFIGMGR_SOURCE_PARTIAL_HXX
+
+#include "sal/config.h"
+
+#include <map>
+#include <set>
+
+#include "boost/noncopyable.hpp"
+
+#include "path.hxx"
+
+namespace rtl { class OUString; }
+
+namespace configmgr {
+
+class Partial: private boost::noncopyable {
+public:
+ enum Containment { CONTAINS_NOT, CONTAINS_SUBNODES, CONTAINS_NODE };
+
+ Partial(
+ std::set< rtl::OUString > const & includedPaths,
+ std::set< rtl::OUString > const & excludedPaths);
+
+ ~Partial();
+
+ Containment contains(Path const & path) const;
+
+private:
+ struct Node {
+ typedef std::map< rtl::OUString, Node > Children;
+
+ Node(): startInclude(false) {}
+
+ Children children;
+ bool startInclude;
+ };
+
+ Node root_;
+};
+
+}
+
+#endif
diff --git a/configmgr/source/update.cxx b/configmgr/source/update.cxx
index ab711c3bec10..57f45068d954 100644
--- a/configmgr/source/update.cxx
+++ b/configmgr/source/update.cxx
@@ -28,6 +28,8 @@
#include "precompiled_configmgr.hxx"
#include "sal/config.h"
+#include <set>
+
#include "configmgr/update.hxx"
#include "osl/mutex.hxx"
#include "rtl/ref.hxx"
@@ -61,6 +63,23 @@ void insertExtensionXcuFile(bool shared, rtl::OUString const & fileUri) {
bc.send();
}
+void insertModificationXcuFile(
+ rtl::OUString const & fileUri,
+ std::set< rtl::OUString > const & includedPaths,
+ std::set< rtl::OUString > const & excludedPaths)
+{
+ Broadcaster bc;
+ {
+ osl::MutexGuard g(lock);
+ Modifications mods;
+ Components::getSingleton().insertModificationXcuFile(
+ fileUri, includedPaths, excludedPaths, &mods);
+ Components::getSingleton().initGlobalBroadcaster(
+ mods, rtl::Reference< RootAccess >(), &bc);
+ }
+ bc.send();
+}
+
}
}
diff --git a/configmgr/source/valueparser.cxx b/configmgr/source/valueparser.cxx
index f951aac5ca01..4adf452c409b 100644
--- a/configmgr/source/valueparser.cxx
+++ b/configmgr/source/valueparser.cxx
@@ -270,6 +270,10 @@ XmlReader::Text ValueParser::getTextMode() const {
if (node_.is()) {
switch (state_) {
case STATE_TEXT:
+ if (!items_.empty()) {
+ break;
+ }
+ // fall through
case STATE_IT:
return
(type_ == TYPE_STRING || type_ == TYPE_STRING_LIST ||
@@ -294,7 +298,9 @@ bool ValueParser::startElement(
name.equals(RTL_CONSTASCII_STRINGPARAM("it")) &&
isListType(type_) && separator_.getLength() == 0)
{
- checkEmptyPad(reader);
+ pad_.clear();
+ // before first <it>, characters are not ignored; assume they
+ // are only whitespace
state_ = STATE_IT;
return true;
}
@@ -351,7 +357,7 @@ bool ValueParser::startElement(
css::uno::Reference< css::uno::XInterface >());
}
-bool ValueParser::endElement(XmlReader const & reader) {
+bool ValueParser::endElement() {
if (!node_.is()) {
return false;
}
@@ -363,7 +369,6 @@ bool ValueParser::endElement(XmlReader const & reader) {
value = parseValue(separator_, pad_.get(), type_);
pad_.clear();
} else {
- checkEmptyPad(reader);
switch (type_) {
case TYPE_BOOLEAN_LIST:
value = convertItems< sal_Bool >();
@@ -454,17 +459,6 @@ int ValueParser::getLayer() const {
return layer_;
}
-void ValueParser::checkEmptyPad(XmlReader const & reader) const {
- if (pad_.is()) {
- throw css::uno::RuntimeException(
- (rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "mixed text and <it> elements in ")) +
- reader.getUrl()),
- css::uno::Reference< css::uno::XInterface >());
- }
-}
-
template< typename T > css::uno::Any ValueParser::convertItems() {
css::uno::Sequence< T > seq(items_.size());
for (sal_Int32 i = 0; i < seq.getLength(); ++i) {
diff --git a/configmgr/source/valueparser.hxx b/configmgr/source/valueparser.hxx
index c328fe7eddce..4e899f4632dd 100644
--- a/configmgr/source/valueparser.hxx
+++ b/configmgr/source/valueparser.hxx
@@ -61,7 +61,7 @@ public:
bool startElement(
XmlReader & reader, XmlReader::Namespace ns, Span const & name);
- bool endElement(XmlReader const & reader);
+ bool endElement();
void characters(Span const & text);
@@ -75,8 +75,6 @@ public:
rtl::OString separator_;
private:
- void checkEmptyPad(XmlReader const & reader) const;
-
template< typename T > com::sun::star::uno::Any convertItems();
enum State { STATE_TEXT, STATE_TEXT_UNICODE, STATE_IT, STATE_IT_UNICODE };
diff --git a/configmgr/source/writemodfile.cxx b/configmgr/source/writemodfile.cxx
index a8e0f77cbd2e..c2573ab67439 100644
--- a/configmgr/source/writemodfile.cxx
+++ b/configmgr/source/writemodfile.cxx
@@ -451,9 +451,9 @@ void writeNode(
void writeModifications(
Components & components, oslFileHandle handle,
- rtl::OUString const & grandparentPathRepresentation,
- rtl::OUString const & parentName, rtl::Reference< Node > const & parent,
- rtl::OUString const & nodeName, rtl::Reference< Node > const & node,
+ rtl::OUString const & parentPathRepresentation,
+ rtl::Reference< Node > const & parent, rtl::OUString const & nodeName,
+ rtl::Reference< Node > const & node,
Modifications::Node const & modifications)
{
// It is never necessary to write oor:finalized or oor:mandatory attributes,
@@ -461,27 +461,15 @@ void writeModifications(
if (modifications.children.empty()) {
OSL_ASSERT(parent.is());
// components themselves have no parent but must have children
+ writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\""));
+ writeAttributeValue(handle, parentPathRepresentation);
+ writeData(handle, RTL_CONSTASCII_STRINGPARAM("\">"));
if (node.is()) {
- writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\""));
- writeAttributeValue(
- handle,
- (grandparentPathRepresentation +
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) +
- Data::createSegment(parent->getTemplateName(), parentName)));
- writeData(handle, RTL_CONSTASCII_STRINGPARAM("\">"));
writeNode(components, handle, parent, nodeName, node);
- writeData(handle, RTL_CONSTASCII_STRINGPARAM("</item>"));
} else {
- writeData(handle, RTL_CONSTASCII_STRINGPARAM("<item oor:path=\""));
switch (parent->kind()) {
case Node::KIND_LOCALIZED_PROPERTY:
- writeAttributeValue(handle, grandparentPathRepresentation);
- writeData(
- handle, RTL_CONSTASCII_STRINGPARAM("\"><prop oor:name=\""));
- writeAttributeValue(handle, parentName);
- writeData(
- handle,
- RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"fuse\"><value"));
+ writeData(handle, RTL_CONSTASCII_STRINGPARAM("<value"));
if (nodeName.getLength() != 0) {
writeData(
handle, RTL_CONSTASCII_STRINGPARAM(" xml:lang=\""));
@@ -489,61 +477,44 @@ void writeModifications(
writeData(handle, RTL_CONSTASCII_STRINGPARAM("\""));
}
writeData(
- handle,
- RTL_CONSTASCII_STRINGPARAM(
- " oor:op=\"remove\"/></prop></item>"));
+ handle, RTL_CONSTASCII_STRINGPARAM(" oor:op=\"remove\"/>"));
break;
case Node::KIND_GROUP:
OSL_ASSERT(
dynamic_cast< GroupNode * >(parent.get())->isExtensible());
- writeAttributeValue(
- handle,
- (grandparentPathRepresentation +
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) +
- Data::createSegment(
- parent->getTemplateName(), parentName)));
writeData(
- handle, RTL_CONSTASCII_STRINGPARAM("\"><prop oor:name=\""));
+ handle, RTL_CONSTASCII_STRINGPARAM("<prop oor:name=\""));
writeAttributeValue(handle, nodeName);
writeData(
handle,
- RTL_CONSTASCII_STRINGPARAM(
- "\" oor:op=\"remove\"/></item>"));
+ RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"remove\"/>"));
break;
case Node::KIND_SET:
- writeAttributeValue(
- handle,
- (grandparentPathRepresentation +
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) +
- Data::createSegment(
- parent->getTemplateName(), parentName)));
writeData(
- handle, RTL_CONSTASCII_STRINGPARAM("\"><node oor:name=\""));
+ handle, RTL_CONSTASCII_STRINGPARAM("<node oor:name=\""));
writeAttributeValue(handle, nodeName);
writeData(
handle,
- RTL_CONSTASCII_STRINGPARAM(
- "\" oor:op=\"remove\"/></item>"));
+ RTL_CONSTASCII_STRINGPARAM("\" oor:op=\"remove\"/>"));
break;
default:
OSL_ASSERT(false); // this cannot happen
break;
}
}
+ writeData(handle, RTL_CONSTASCII_STRINGPARAM("</item>"));
} else {
- rtl::OUString parentPathRep;
- if (parent.is()) { // components themselves have no parent
- parentPathRep = grandparentPathRepresentation +
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) +
- Data::createSegment(parent->getTemplateName(), parentName);
- }
OSL_ASSERT(node.is());
+ rtl::OUString pathRep(
+ parentPathRepresentation +
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) +
+ Data::createSegment(node->getTemplateName(), nodeName));
for (Modifications::Node::Children::const_iterator i(
modifications.children.begin());
i != modifications.children.end(); ++i)
{
writeModifications(
- components, handle, parentPathRep, nodeName, node, i->first,
+ components, handle, pathRep, node, i->first,
node->getMember(i->first), i->second);
}
}
@@ -605,9 +576,8 @@ void writeModFile(
j != data.modifications.getRoot().children.end(); ++j)
{
writeModifications(
- components, tmp.handle, rtl::OUString(), rtl::OUString(),
- rtl::Reference< Node >(), j->first,
- Data::findNode(Data::NO_LAYER, data.components, j->first),
+ components, tmp.handle, rtl::OUString(), rtl::Reference< Node >(),
+ j->first, Data::findNode(Data::NO_LAYER, data.components, j->first),
j->second);
}
writeData(tmp.handle, RTL_CONSTASCII_STRINGPARAM("</oor:items>"));
diff --git a/configmgr/source/xcdparser.cxx b/configmgr/source/xcdparser.cxx
index 8306c692c30f..498254b35644 100644
--- a/configmgr/source/xcdparser.cxx
+++ b/configmgr/source/xcdparser.cxx
@@ -53,7 +53,7 @@ namespace css = com::sun::star;
}
-XcdParser::XcdParser(int layer, Dependencies const & dependencies, Data * data):
+XcdParser::XcdParser(int layer, Dependencies const & dependencies, Data & data):
layer_(layer), dependencies_(dependencies), data_(data), state_(STATE_START)
{}
@@ -137,7 +137,7 @@ bool XcdParser::startElement(
if (ns == XmlReader::NAMESPACE_OOR &&
name.equals(RTL_CONSTASCII_STRINGPARAM("component-data")))
{
- nestedParser_ = new XcuParser(layer_ + 1, data_, 0);
+ nestedParser_ = new XcuParser(layer_ + 1, data_, 0, 0);
nesting_ = 1;
return nestedParser_->startElement(reader, ns, name);
}
diff --git a/configmgr/source/xcdparser.hxx b/configmgr/source/xcdparser.hxx
index 2e35b3686e60..2ad8ecea7f93 100644
--- a/configmgr/source/xcdparser.hxx
+++ b/configmgr/source/xcdparser.hxx
@@ -47,7 +47,7 @@ class XcdParser: public Parser {
public:
typedef std::set< rtl::OUString > Dependencies;
- XcdParser(int layer, Dependencies const & dependencies, Data * data);
+ XcdParser(int layer, Dependencies const & dependencies, Data & data);
private:
virtual ~XcdParser();
@@ -66,7 +66,7 @@ private:
int layer_;
Dependencies const & dependencies_;
- Data * data_;
+ Data & data_;
State state_;
rtl::OUString dependency_;
rtl::Reference< Parser > nestedParser_;
diff --git a/configmgr/source/xcsparser.cxx b/configmgr/source/xcsparser.cxx
index 15141844a276..12e64ebbe171 100644
--- a/configmgr/source/xcsparser.cxx
+++ b/configmgr/source/xcsparser.cxx
@@ -60,9 +60,66 @@ namespace {
namespace css = com::sun::star;
+// Conservatively merge a template or component (and its recursive parts) into
+// an existing instance:
+void merge(
+ rtl::Reference< Node > const & original,
+ rtl::Reference< Node > const & update)
+{
+ OSL_ASSERT(
+ original.is() && update.is() && original->kind() == update->kind() &&
+ update->getFinalized() == Data::NO_LAYER);
+ if (update->getLayer() >= original->getLayer() &&
+ update->getLayer() <= original->getFinalized())
+ {
+ switch (original->kind()) {
+ case Node::KIND_PROPERTY:
+ case Node::KIND_LOCALIZED_PROPERTY:
+ case Node::KIND_LOCALIZED_VALUE:
+ break; //TODO: merge certain parts?
+ case Node::KIND_GROUP:
+ if (dynamic_cast< GroupNode * >(original.get())->isExtensible()) {
+ for (NodeMap::iterator i2(update->getMembers().begin());
+ i2 != update->getMembers().end(); ++i2)
+ {
+ NodeMap::iterator i1(
+ original->getMembers().find(i2->first));
+ if (i1 == original->getMembers().end()) {
+ if (i2->second->kind() == Node::KIND_PROPERTY) {
+ original->getMembers().insert(*i2);
+ }
+ } else if (i2->second->kind() == i1->second->kind()) {
+ merge(i1->second, i2->second);
+ }
+ }
+ }
+ break;
+ case Node::KIND_SET:
+ for (NodeMap::iterator i2(update->getMembers().begin());
+ i2 != update->getMembers().end(); ++i2)
+ {
+ NodeMap::iterator i1(original->getMembers().find(i2->first));
+ if (i1 == original->getMembers().end()) {
+ if (dynamic_cast< SetNode * >(original.get())->
+ isValidTemplate(i2->second->getTemplateName()))
+ {
+ original->getMembers().insert(*i2);
+ }
+ } else if (i2->second->kind() == i1->second->kind() &&
+ (i2->second->getTemplateName() ==
+ i1->second->getTemplateName()))
+ {
+ merge(i1->second, i2->second);
+ }
+ }
+ break;
+ }
+ }
}
-XcsParser::XcsParser(int layer, Data * data):
+}
+
+XcsParser::XcsParser(int layer, Data & data):
valueParser_(layer), data_(data), state_(STATE_START)
{}
@@ -209,7 +266,7 @@ bool XcsParser::startElement(
}
void XcsParser::endElement(XmlReader const & reader) {
- if (valueParser_.endElement(reader)) {
+ if (valueParser_.endElement()) {
return;
}
if (ignoring_ > 0) {
@@ -218,15 +275,30 @@ void XcsParser::endElement(XmlReader const & reader) {
Element top(elements_.top());
elements_.pop();
if (top.node.is()) {
- NodeMap * map;
if (elements_.empty()) {
switch (state_) {
case STATE_TEMPLATES:
- map = &data_->templates;
+ {
+ NodeMap::iterator i(data_.templates.find(top.name));
+ if (i == data_.templates.end()) {
+ data_.templates.insert(
+ NodeMap::value_type(top.name, top.node));
+ } else {
+ merge(i->second, top.node);
+ }
+ }
break;
case STATE_COMPONENT:
- map = &data_->components;
- state_ = STATE_COMPONENT_DONE;
+ {
+ NodeMap::iterator i(data_.components.find(top.name));
+ if (i == data_.components.end()) {
+ data_.components.insert(
+ NodeMap::value_type(top.name, top.node));
+ } else {
+ merge(i->second, top.node);
+ }
+ state_ = STATE_COMPONENT_DONE;
+ }
break;
default:
OSL_ASSERT(false);
@@ -235,10 +307,9 @@ void XcsParser::endElement(XmlReader const & reader) {
RTL_CONSTASCII_USTRINGPARAM("this cannot happen")),
css::uno::Reference< css::uno::XInterface >());
}
- } else {
- map = &elements_.top().node->getMembers();
- }
- if (!map->insert(NodeMap::value_type(top.name, top.node)).second) {
+ } else if (!elements_.top().node->getMembers().insert(
+ NodeMap::value_type(top.name, top.node)).second)
+ {
throw css::uno::RuntimeException(
(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("duplicate ")) +
top.name +
@@ -372,7 +443,7 @@ void XcsParser::handleNodeRef(XmlReader & reader) {
css::uno::Reference< css::uno::XInterface >());
}
rtl::Reference< Node > tmpl(
- data_->getTemplate(
+ data_.getTemplate(
valueParser_.getLayer(),
xmldata::parseTemplateReference(
component, hasNodeType, nodeType, 0)));
diff --git a/configmgr/source/xcsparser.hxx b/configmgr/source/xcsparser.hxx
index 21a124945a2e..196add9a826a 100644
--- a/configmgr/source/xcsparser.hxx
+++ b/configmgr/source/xcsparser.hxx
@@ -48,7 +48,7 @@ struct Span;
class XcsParser: public Parser {
public:
- XcsParser(int layer, Data * data);
+ XcsParser(int layer, Data & data);
private:
virtual ~XcsParser();
@@ -94,7 +94,7 @@ private:
typedef std::stack< Element > ElementStack;
ValueParser valueParser_;
- Data * data_;
+ Data & data_;
rtl::OUString componentName_;
State state_;
long ignoring_;
diff --git a/configmgr/source/xcuparser.cxx b/configmgr/source/xcuparser.cxx
index 220168c62725..77b0f747f313 100644
--- a/configmgr/source/xcuparser.cxx
+++ b/configmgr/source/xcuparser.cxx
@@ -49,6 +49,7 @@
#include "modifications.hxx"
#include "node.hxx"
#include "nodemap.hxx"
+#include "partial.hxx"
#include "path.hxx"
#include "propertynode.hxx"
#include "setnode.hxx"
@@ -65,14 +66,15 @@ namespace css = com::sun::star;
}
-XcuParser::XcuParser(int layer, Data * data, Modifications * modifications):
- valueParser_(layer), data_(data), modifications_(modifications)
-{
- if (layer == Data::NO_LAYER) {
- OSL_ASSERT(modifications_ == 0);
- modifications_ = &data_->modifications;
- }
-}
+XcuParser::XcuParser(
+ int layer, Data & data, Partial const * partial,
+ Modifications * broadcastModifications):
+ valueParser_(layer), data_(data),
+ partial_(partial), broadcastModifications_(broadcastModifications),
+ recordModifications_(layer == Data::NO_LAYER),
+ trackPath_(
+ partial_ != 0 || broadcastModifications_ != 0 || recordModifications_)
+{}
XcuParser::~XcuParser() {}
@@ -105,7 +107,7 @@ bool XcuParser::startElement(
css::uno::Reference< css::uno::XInterface >());
}
} else if (state_.top().ignore) {
- state_.push(state_.top());
+ state_.push(State(false));
} else if (!state_.top().node.is()) {
if (ns == XmlReader::NAMESPACE_NONE &&
name.equals(RTL_CONSTASCII_STRINGPARAM("item")))
@@ -209,12 +211,12 @@ bool XcuParser::startElement(
return true;
}
-void XcuParser::endElement(XmlReader const & reader) {
- if (valueParser_.endElement(reader)) {
+void XcuParser::endElement(XmlReader const &) {
+ if (valueParser_.endElement()) {
return;
}
OSL_ASSERT(!state_.empty());
- bool ignore = state_.top().ignore;
+ bool pop = state_.top().pop;
rtl::Reference< Node > insert;
rtl::OUString name;
if (state_.top().insert) {
@@ -227,10 +229,10 @@ void XcuParser::endElement(XmlReader const & reader) {
OSL_ASSERT(!state_.empty() && state_.top().node.is());
state_.top().node->getMembers()[name] = insert;
}
- if (!ignore && !modificationPath_.empty()) {
- modificationPath_.pop_back();
+ if (pop && !path_.empty()) {
+ path_.pop_back();
// </item> will pop less than <item> pushed, but that is harmless,
- // as the next <item> will reset modificationPath_
+ // as the next <item> will reset path_
}
}
@@ -328,16 +330,27 @@ void XcuParser::handleComponentData(XmlReader & reader) {
}
componentName_ = xmldata::convertFromUtf8(
Span(buf.getStr(), buf.getLength()));
+ if (trackPath_) {
+ OSL_ASSERT(path_.empty());
+ path_.push_back(componentName_);
+ if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT)
+ {
+ state_.push(State(true)); // ignored
+ return;
+ }
+ }
rtl::Reference< Node > node(
Data::findNode(
- valueParser_.getLayer(), data_->components, componentName_));
+ valueParser_.getLayer(), data_.components, componentName_));
if (!node.is()) {
- throw css::uno::RuntimeException(
- (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown component ")) +
- componentName_ +
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" in ")) +
- reader.getUrl()),
- css::uno::Reference< css::uno::XInterface >());
+ OSL_TRACE(
+ "configmgr unknown component %s in %s",
+ rtl::OUStringToOString(
+ componentName_, RTL_TEXTENCODING_UTF8).getStr(),
+ rtl::OUStringToOString(
+ reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr());
+ state_.push(State(true)); // ignored
+ return;
}
switch (op) {
case OPERATION_MODIFY:
@@ -356,10 +369,6 @@ void XcuParser::handleComponentData(XmlReader & reader) {
node->getFinalized());
node->setFinalized(finalizedLayer);
state_.push(State(node, finalizedLayer < valueParser_.getLayer()));
- if (modifications_ != 0) {
- OSL_ASSERT(modificationPath_.empty());
- modificationPath_.push_back(componentName_);
- }
}
void XcuParser::handleItem(XmlReader & reader) {
@@ -386,27 +395,43 @@ void XcuParser::handleItem(XmlReader & reader) {
rtl::OUString path(xmldata::convertFromUtf8(attrPath));
int finalizedLayer;
rtl::Reference< Node > node(
- data_->resolvePathRepresentation(
- path, &modificationPath_, &finalizedLayer));
+ data_.resolvePathRepresentation(path, &path_, &finalizedLayer));
if (!node.is()) {
- //TODO: Within Components::parseModificationLayer (but only there) it
- // can rightly happen that data is read that does not match a schema
- // (that no schema exists, or that the schema specifies a different
- // type), namely if the schema was brought along by an extension that
- // has been removed or replaced; instead of taking care of that at all
- // the relevant places, as a hack, only "top-level" <item>s (that only
- // appear in modification layer data) with unknown path are filtered out
- // here.
OSL_TRACE(
- "configmgr unknown <item path=\"%s\">",
- rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr());
- state_.push(State()); // ignored
+ "configmgr unknown item %s in %s",
+ rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr(),
+ rtl::OUStringToOString(
+ reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr());
+ state_.push(State(true)); // ignored
return;
}
- OSL_ASSERT(!modificationPath_.empty());
- componentName_ = modificationPath_.front();
- if (modifications_ == 0) {
- modificationPath_.clear();
+ OSL_ASSERT(!path_.empty());
+ componentName_ = path_.front();
+ if (trackPath_) {
+ if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT)
+ {
+ state_.push(State(true)); // ignored
+ return;
+ }
+ } else {
+ path_.clear();
+ }
+ switch (node->kind()) {
+ case Node::KIND_PROPERTY:
+ case Node::KIND_LOCALIZED_VALUE:
+ OSL_TRACE(
+ "configmgr item of bad type %s in %s",
+ rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr(),
+ rtl::OUStringToOString(
+ reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr());
+ state_.push(State(true)); // ignored
+ return;
+ case Node::KIND_LOCALIZED_PROPERTY:
+ valueParser_.type_ = dynamic_cast< LocalizedPropertyNode * >(
+ node.get())->getStaticType();
+ break;
+ default:
+ break;
}
state_.push(State(node, finalizedLayer < valueParser_.getLayer()));
}
@@ -483,13 +508,13 @@ void XcuParser::handlePropValue(XmlReader & reader, PropertyNode * prop) {
css::uno::Reference< css::uno::XInterface >());
}
prop->setValue(valueParser_.getLayer(), css::uno::Any());
- state_.push(State());
+ state_.push(State(false));
} else if (external.getLength() == 0) {
valueParser_.separator_ = separator;
valueParser_.start(prop);
} else {
prop->setExternal(valueParser_.getLayer(), external);
- state_.push(State());
+ state_.push(State(false));
}
}
@@ -546,11 +571,20 @@ void XcuParser::handleLocpropValue(
op = parseOperation(reader.getAttributeValue(true));
}
}
+ if (trackPath_) {
+ path_.push_back(name);
+ if (partial_ != 0 &&
+ partial_->contains(path_) != Partial::CONTAINS_NODE)
+ {
+ state_.push(State(true)); // ignored
+ return;
+ }
+ }
NodeMap::iterator i(locprop->getMembers().find(name));
if (i != locprop->getMembers().end() &&
i->second->getLayer() > valueParser_.getLayer())
{
- state_.push(State()); // ignored
+ state_.push(State(true)); // ignored
return;
}
if (nil && !locprop->isNillable()) {
@@ -563,23 +597,29 @@ void XcuParser::handleLocpropValue(
}
switch (op) {
case OPERATION_FUSE:
- if (nil) {
- if (i == locprop->getMembers().end()) {
- locprop->getMembers()[name] = new LocalizedValueNode(
- valueParser_.getLayer(), css::uno::Any());
+ {
+ bool pop = false;
+ if (nil) {
+ if (i == locprop->getMembers().end()) {
+ locprop->getMembers()[name] = new LocalizedValueNode(
+ valueParser_.getLayer(), css::uno::Any());
+ } else {
+ dynamic_cast< LocalizedValueNode * >(
+ i->second.get())->setValue(
+ valueParser_.getLayer(), css::uno::Any());
+ }
+ state_.push(State(true));
} else {
- dynamic_cast< LocalizedValueNode * >(i->second.get())->setValue(
- valueParser_.getLayer(), css::uno::Any());
+ valueParser_.separator_ = separator;
+ valueParser_.start(locprop, name);
+ pop = true;
+ }
+ if (trackPath_) {
+ recordModification();
+ if (pop) {
+ path_.pop_back();
+ }
}
- state_.push(State());
- } else {
- valueParser_.separator_ = separator;
- valueParser_.start(locprop, name);
- }
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- modificationPath_.pop_back();
}
break;
case OPERATION_REMOVE:
@@ -588,12 +628,8 @@ void XcuParser::handleLocpropValue(
if (i != locprop->getMembers().end()) {
locprop->getMembers().erase(i);
}
- state_.push(State());
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- modificationPath_.pop_back();
- }
+ state_.push(State(true));
+ recordModification();
break;
default:
throw css::uno::RuntimeException(
@@ -643,6 +679,17 @@ void XcuParser::handleGroupProp(XmlReader & reader, GroupNode * group) {
reader.getUrl()),
css::uno::Reference< css::uno::XInterface >());
}
+ if (trackPath_) {
+ path_.push_back(name);
+ //TODO: This ignores locprop values for which specific include paths
+ // exist (i.e., for which contains(locprop path) = CONTAINS_SUBNODES):
+ if (partial_ != 0 &&
+ partial_->contains(path_) != Partial::CONTAINS_NODE)
+ {
+ state_.push(State(true)); // ignored
+ return;
+ }
+ }
NodeMap::iterator i(group->getMembers().find(name));
if (i == group->getMembers().end()) {
handleUnknownGroupProp(reader, group, name, type, op, finalized);
@@ -672,17 +719,10 @@ void XcuParser::handleUnknownGroupProp(
XmlReader const & reader, GroupNode * group, rtl::OUString const & name,
Type type, Operation operation, bool finalized)
{
- if (!group->isExtensible()) {
- throw css::uno::RuntimeException(
- (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown prop ")) +
- name + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" in ")) +
- reader.getUrl()),
- css::uno::Reference< css::uno::XInterface >());
- }
switch (operation) {
case OPERATION_REPLACE:
case OPERATION_FUSE:
- {
+ if (group->isExtensible()) {
if (type == TYPE_ERROR) {
throw css::uno::RuntimeException(
(rtl::OUString(
@@ -701,17 +741,17 @@ void XcuParser::handleUnknownGroupProp(
prop->setFinalized(valueParser_.getLayer());
}
state_.push(State(prop, name, state_.top().locked));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- }
+ recordModification();
+ break;
}
- break;
+ // fall through
default:
OSL_TRACE(
- "ignoring modify or remove of unknown (presumably extension)"
- " property");
- state_.push(State());
+ "configmgr unknown property %s in %s",
+ rtl::OUStringToOString(name, RTL_TEXTENCODING_UTF8).getStr(),
+ rtl::OUStringToOString(
+ reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr());
+ state_.push(State(true)); // ignored
break;
}
}
@@ -724,7 +764,7 @@ void XcuParser::handlePlainGroupProp(
PropertyNode * property = dynamic_cast< PropertyNode * >(
propertyIndex->second.get());
if (property->getLayer() > valueParser_.getLayer()) {
- state_.push(State()); // ignored
+ state_.push(State(true)); // ignored
return;
}
int finalizedLayer = std::min(
@@ -751,10 +791,7 @@ void XcuParser::handlePlainGroupProp(
property,
(state_.top().locked ||
finalizedLayer < valueParser_.getLayer())));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- }
+ recordModification();
break;
case OPERATION_REMOVE:
if (!property->isExtension()) {
@@ -767,12 +804,8 @@ void XcuParser::handlePlainGroupProp(
css::uno::Reference< css::uno::XInterface >());
}
group->getMembers().erase(propertyIndex);
- state_.push(State()); // ignore children
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- modificationPath_.pop_back();
- }
+ state_.push(State(true)); // ignore children
+ recordModification();
break;
}
}
@@ -782,7 +815,7 @@ void XcuParser::handleLocalizedGroupProp(
rtl::OUString const & name, Type type, Operation operation, bool finalized)
{
if (property->getLayer() > valueParser_.getLayer()) {
- state_.push(State()); // ignored
+ state_.push(State(true)); // ignored
return;
}
int finalizedLayer = std::min(
@@ -808,9 +841,6 @@ void XcuParser::handleLocalizedGroupProp(
property,
(state_.top().locked ||
finalizedLayer < valueParser_.getLayer())));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- }
break;
case OPERATION_REPLACE:
{
@@ -824,10 +854,7 @@ void XcuParser::handleLocalizedGroupProp(
replacement, name,
(state_.top().locked ||
finalizedLayer < valueParser_.getLayer())));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- }
+ recordModification();
}
break;
case OPERATION_REMOVE:
@@ -876,14 +903,24 @@ void XcuParser::handleGroupNode(
reader.getUrl()),
css::uno::Reference< css::uno::XInterface >());
}
+ if (trackPath_) {
+ path_.push_back(name);
+ if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT)
+ {
+ state_.push(State(true)); // ignored
+ return;
+ }
+ }
rtl::Reference< Node > child(
Data::findNode(valueParser_.getLayer(), group->getMembers(), name));
if (!child.is()) {
- throw css::uno::RuntimeException(
- (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown node ")) +
- name + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" in ")) +
- reader.getUrl()),
- css::uno::Reference< css::uno::XInterface >());
+ OSL_TRACE(
+ "configmgr unknown node %s in %s",
+ rtl::OUStringToOString(name, RTL_TEXTENCODING_UTF8).getStr(),
+ rtl::OUStringToOString(
+ reader.getUrl(), RTL_TEXTENCODING_UTF8).getStr());
+ state_.push(State(true)); // ignored
+ return;
}
if (op != OPERATION_MODIFY && op != OPERATION_FUSE) {
throw css::uno::RuntimeException(
@@ -901,9 +938,6 @@ void XcuParser::handleGroupNode(
State(
child,
state_.top().locked || finalizedLayer < valueParser_.getLayer()));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- }
}
void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
@@ -958,6 +992,14 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
reader.getUrl()),
css::uno::Reference< css::uno::XInterface >());
}
+ if (trackPath_) {
+ path_.push_back(name);
+ if (partial_ != 0 && partial_->contains(path_) == Partial::CONTAINS_NOT)
+ {
+ state_.push(State(true)); // ignored
+ return;
+ }
+ }
rtl::OUString templateName(
xmldata::parseTemplateReference(
component, hasNodeType, nodeType, &set->getDefaultTemplateName()));
@@ -972,7 +1014,7 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
css::uno::Reference< css::uno::XInterface >());
}
rtl::Reference< Node > tmpl(
- data_->getTemplate(valueParser_.getLayer(), templateName));
+ data_.getTemplate(valueParser_.getLayer(), templateName));
if (!tmpl.is()) {
throw css::uno::RuntimeException(
(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("set member node ")) +
@@ -993,7 +1035,7 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
mandatoryLayer = std::min(mandatoryLayer, i->second->getMandatory());
i->second->setMandatory(mandatoryLayer);
if (i->second->getLayer() > valueParser_.getLayer()) {
- state_.push(State()); // ignored
+ state_.push(State(true)); // ignored
return;
}
}
@@ -1001,48 +1043,39 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
case OPERATION_MODIFY:
if (i == set->getMembers().end()) {
OSL_TRACE("ignoring modify of unknown set member node");
- state_.push(State());
+ state_.push(State(true)); // ignored
} else {
state_.push(
State(
i->second,
(state_.top().locked ||
finalizedLayer < valueParser_.getLayer())));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- }
}
break;
case OPERATION_REPLACE:
if (state_.top().locked || finalizedLayer < valueParser_.getLayer()) {
- state_.push(State()); // ignored
+ state_.push(State(true)); // ignored
} else {
rtl::Reference< Node > member(tmpl->clone());
member->setLayer(valueParser_.getLayer());
member->setFinalized(finalizedLayer);
member->setMandatory(mandatoryLayer);
state_.push(State(member, name, false));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- }
+ recordModification();
}
break;
case OPERATION_FUSE:
if (i == set->getMembers().end()) {
if (state_.top().locked || finalizedLayer < valueParser_.getLayer())
{
- state_.push(State()); // ignored
+ state_.push(State(true)); // ignored
} else {
rtl::Reference< Node > member(tmpl->clone());
member->setLayer(valueParser_.getLayer());
member->setFinalized(finalizedLayer);
member->setMandatory(mandatoryLayer);
state_.push(State(member, name, false));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- }
+ recordModification();
}
} else {
state_.push(
@@ -1050,9 +1083,6 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
i->second,
(state_.top().locked ||
finalizedLayer < valueParser_.getLayer())));
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- }
}
break;
case OPERATION_REMOVE:
@@ -1064,14 +1094,19 @@ void XcuParser::handleSetNode(XmlReader & reader, SetNode * set) {
{
set->getMembers().erase(i);
}
- state_.push(State());
- if (modifications_ != 0) {
- modificationPath_.push_back(name);
- modifications_->add(modificationPath_);
- modificationPath_.pop_back();
- }
+ state_.push(State(true));
+ recordModification();
break;
}
}
+void XcuParser::recordModification() {
+ if (broadcastModifications_ != 0) {
+ broadcastModifications_->add(path_);
+ }
+ if (recordModifications_) {
+ data_.modifications.add(path_);
+ }
+}
+
}
diff --git a/configmgr/source/xcuparser.hxx b/configmgr/source/xcuparser.hxx
index 21806edebe9c..64108451b4ef 100644
--- a/configmgr/source/xcuparser.hxx
+++ b/configmgr/source/xcuparser.hxx
@@ -49,6 +49,7 @@ namespace configmgr {
class GroupNode;
class LocalizedPropertyNode;
class Modifications;
+class Partial;
class PropertyNode;
class SetNode;
struct Data;
@@ -56,7 +57,9 @@ struct Span;
class XcuParser: public Parser {
public:
- XcuParser(int layer, Data * data, Modifications * modifications);
+ XcuParser(
+ int layer, Data & data, Partial const * partial,
+ Modifications * broadcastModifications);
private:
virtual ~XcuParser();
@@ -105,36 +108,44 @@ private:
void handleSetNode(XmlReader & reader, SetNode * set);
+ void recordModification();
+
struct State {
rtl::Reference< Node > node; // empty iff ignore or <items>
rtl::OUString name; // empty and ignored if !insert
bool ignore;
bool insert;
bool locked;
+ bool pop;
- inline State(): ignore(true), insert(false), locked(false) {}
+ inline State(bool thePop):
+ ignore(true), insert(false), locked(false), pop(thePop)
+ {}
inline State(rtl::Reference< Node > const & theNode, bool theLocked):
- node(theNode), ignore(false), insert(false), locked(theLocked)
+ node(theNode), ignore(false), insert(false), locked(theLocked),
+ pop(true)
{}
inline State(
rtl::Reference< Node > const & theNode,
rtl::OUString const & theName, bool theLocked):
node(theNode), name(theName), ignore(false), insert(true),
- locked(theLocked)
+ locked(theLocked), pop(true)
{}
};
typedef std::stack< State > StateStack;
ValueParser valueParser_;
- Data * data_;
- Modifications * modifications_;
+ Data & data_;
+ Partial const * partial_;
+ Modifications * broadcastModifications_;
+ bool recordModifications_;
+ bool trackPath_;
rtl::OUString componentName_;
StateStack state_;
- Path modificationPath_;
- rtl::OUString path_;
+ Path path_;
};
}
diff --git a/configure.in b/configure.in
index 91ff5806fbe5..928e08275213 100644
--- a/configure.in
+++ b/configure.in
@@ -550,6 +550,9 @@ AC_ARG_WITH(system-lpsolve,
AC_ARG_WITH(system-cppunit,
[ --with-system-cppunit Use cppunit already on system
],,)
+AC_ARG_WITH(system-redland,
+[ --with-system-redland Use redland library already on system
+],,)
AC_ARG_WITH(system-mozilla,
[ --with-system-mozilla Use mozilla already on system. Note that some
components cannot be built against a contemporary
@@ -1404,6 +1407,9 @@ fi
AC_MSG_RESULT($GCC_HOME)
AC_SUBST(GCC_HOME)
+save_CC=$CC
+save_CXX=$CXX
+
if test -n "$with_gcc_home"; then
if test -z "$CC"; then
CC="$with_gcc_home/bin/gcc"
@@ -1431,7 +1437,6 @@ if test \( "$_os" != "WINNT" -o "$WITH_MINGWIN" = "yes" \) -a "$GCC" = "yes"; th
AC_MSG_CHECKING([the GNU gcc compiler version])
_gcc_version=`$CC -dumpversion`
_gcc_major=`echo $_gcc_version | $AWK -F. '{ print \$1 }'`
- _gcc_longver=`echo $_gcc_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
GCCVER=`echo $_gcc_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
if test "$_gcc_major" -lt "3"; then
@@ -1443,7 +1448,22 @@ if test \( "$_os" != "WINNT" -o "$WITH_MINGWIN" = "yes" \) -a "$GCC" = "yes"; th
fi
fi
fi
- AC_MSG_RESULT([checked (gcc $_gcc_version)])
+ if test "$_os" = "Darwin" -a "$GCCVER" -ge "040100" ; then
+ if test -z "$save_CC" -a -x "$GCC_HOME/bin/gcc-4.0" ; then
+ CC=$GCC_HOME/bin/gcc-4.0
+ GCCVER2=`"$CC" -dumpversion | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
+ if test "$GCCVER2" -ge "040000" -a "$GCCVER2" -lt "040100" ; then
+ GCCVER=$GCCVER2
+ fi
+ fi
+ if test "$GCCVER" -ge "040100" ; then
+ AC_MSG_ERROR([You need to use the gcc-4.0 compiler (gcc $_gcc_version won't work with the MacOSX10.4u.sdk) - set CC accordingly])
+ else
+ AC_MSG_RESULT([implicitly using CC=$CC])
+ fi
+ else
+ AC_MSG_RESULT([checked (gcc $_gcc_version)])
+ fi
if test "$_os" = "SunOS"; then
AC_MSG_CHECKING([gcc linker])
if $CC -Wl,--version 2>&1 |head -n 1| grep -v GNU > /dev/null;then
@@ -2048,14 +2068,27 @@ if test "$GXX" = "yes"; then
AC_MSG_CHECKING([the GNU C++ compiler version])
_gpp_version=`$CXX -dumpversion`
- _gpp_major=`echo $_gpp_version | $AWK -F. '{ print \$1 }'`
- _gpp_minor=`echo $_gpp_version | $AWK -F. '{ print \$2 }'`
-
- AC_MSG_RESULT([checked (g++ $_gpp_version)])
+ _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
+
+ if test "$_os" = "Darwin" -a "$_gpp_majmin" -ge "401" ; then
+ if test -z "$save_CXX" -a -x "$GCC_HOME/bin/g++-4.0" ; then
+ CXX=$GCC_HOME/bin/g++-4.0
+ _gpp_majmin_2=`"$CXX" -dumpversion | $AWK -F. '{ print \$1*100+\$2 }'`
+ if test "$_gpp_majmin_2" -ge "400" -a "$_gpp_majmin_2" -lt "401" ; then
+ _gpp_majmin=$_gpp_majmin_2
+ fi
+ fi
+ if test "$_gpp_majmin" -ge "401" ; then
+ AC_MSG_ERROR([You need to use the g++-4.0 compiler (g++ $_gpp_version won't work with the MacOSX10.4u.sdk) - set CXX accordingly])
+ else
+ AC_MSG_RESULT([implicitly using CXX=$CXX])
+ fi
+ else
+ AC_MSG_RESULT([checked (g++ $_gpp_version)])
+ fi
- if test "$_gpp_major" = "3"; then
- if test "$_gpp_minor" = "4"; then
- AC_MSG_CHECKING([whether $CXX has the enum bug])
+ if test "$_gpp_majmin" = "304"; then
+ AC_MSG_CHECKING([whether $CXX has the enum bug])
AC_TRY_RUN([
extern "C" void abort (void);
extern "C" void exit (int status);
@@ -2078,7 +2111,6 @@ main (void)
return 0;
}
],[AC_MSG_ERROR([your version of the GNU C++ compile has a bug which prevents OpenOffice.org from being compiled correctly - please check http://gcc.gnu.org/ml/gcc-patches/2004-07/msg00968.html for details.])], [AC_MSG_RESULT([no])])
- fi
fi
fi
@@ -2218,21 +2250,6 @@ if test "$_os" = "SunOS"; then
fi
fi
dnl ===================================================================
-dnl Extra checking for the DARWIN compiler
-dnl ===================================================================
-if test "$_os" = "Darwin"; then
- dnl c++ packaged with cc (gcc) for Macosx
- if test "$CC" = "cc"; then
- AC_MSG_CHECKING([Macosx c++ Compiler])
- if test "$CXX" != "c++"; then
- AC_MSG_WARN([Macosx C++ was not found])
- echo "Macosx C++ was not found" >> warn
- else
- AC_MSG_RESULT([checked])
- fi
- fi
-fi
-dnl ===================================================================
dnl Extra checking for the OSF compiler
dnl ===================================================================
if test "$_os" = "OSF1"; then
@@ -3726,26 +3743,25 @@ AC_SUBST(LIBXML_LIBS)
dnl ===================================================================
dnl Check for system python
dnl ===================================================================
+AC_MSG_CHECKING([which python to use])
if test "$_os" = "Darwin" && test "$with_system_python" != "no"; then
with_system_python=yes
-fi
-AC_MSG_CHECKING([which python to use])
-if test -n "$with_system_python" -o -n "$with_system_libs" && \
+ AC_MSG_RESULT([compiling against MacOSX10.4u.sdk (python version 2.3)])
+ PYTHON_CFLAGS="-I/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3"
+ PYTHON_LIBS="-framework Python"
+elif test -n "$with_system_python" -o -n "$with_system_libs" && \
test "$with_system_python" != "no"; then
- SYSTEM_PYTHON=YES
+ with_system_python=yes
AC_MSG_RESULT([external])
AM_PATH_PYTHON([2.2])
python_include=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('INCLUDEPY');"`
python_version=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('VERSION');"`
PYTHON_CFLAGS="-I$python_include"
-
- if test "$_os" = "Darwin"; then
- PYTHON_LIBS="-framework Python"
- else
- PYTHON_LIBS="-lpython$python_version"
- fi
-
+ PYTHON_LIBS="-lpython$python_version"
+fi
+if test "$with_system_python" = "yes" ; then
+ SYSTEM_PYTHON=YES
dnl check if the headers really work:
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
@@ -5004,16 +5020,12 @@ dnl ===================================================================
dnl Check for system redland
dnl ===================================================================
AC_MSG_CHECKING([which redland library to use])
-dnl if test -n "$with_system_redland" -o -n "$with_system_libs" && \
-dnl test "$with_system_redland" != "no"; then
-dnl mst: NOTE: right now we need patches against redland
-dnl so we only enable system redland if explicitly requested
-dnl if next version includes patches, insert version check here
-if test -n "$with_system_redland" && \
+if test -n "$with_system_redland" -o -n "$with_system_libs" && \
test "$with_system_redland" != "no"; then
AC_MSG_RESULT([external])
SYSTEM_REDLAND=YES
- PKG_CHECK_MODULES(REDLAND, redland)
+ dnl versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
+ PKG_CHECK_MODULES(REDLAND, redland >= 1.0.8)
else
AC_MSG_RESULT([internal])
BUILD_TYPE="$BUILD_TYPE REDLAND"
diff --git a/crashrep/prj/d.lst b/crashrep/prj/d.lst
index c7f78c8ca0c7..a53aacc4659c 100755
--- a/crashrep/prj/d.lst
+++ b/crashrep/prj/d.lst
@@ -1,4 +1,3 @@
..\%__SRC%\bin\soreport.exe %_DEST%\bin%_EXT%\crashrep.exe
..\%__SRC%\bin\soreport.exe.manifest %_DEST%\bin%_EXT%\crashrep.exe.manifest
-..\%__SRC%\bin\crash_report.bin %_DEST%\bin%_EXT%\crash_report.bin
-..\%__SRC%\misc\crash_report.sh %_DEST%\bin%_EXT%\crash_report
+..\%__SRC%\bin\crashrep %_DEST%\bin%_EXT%\crashrep
diff --git a/crashrep/source/unx/makefile.mk b/crashrep/source/unx/makefile.mk
index fb0465d329fc..8383f682443c 100755
--- a/crashrep/source/unx/makefile.mk
+++ b/crashrep/source/unx/makefile.mk
@@ -28,7 +28,7 @@
PRJ=..$/..
PRJNAME=crashrep
-TARGET=crash_report.bin
+TARGET=crashrep
TARGETTYPE=CUI
ENABLE_EXCEPTIONS=TRUE
@@ -63,8 +63,6 @@ APP1STDLIBS+=-ldl -lnsl
APP1STDLIBS+=-lsocket
.ENDIF
-UNIXTEXT = $(MISC)/crash_report.sh
-
.ENDIF # "$(ENABLE_CRASHDUMP)" != "" || "$(PRODUCT)" == ""
# --- Targets ------------------------------------------------------
diff --git a/cui/source/dialogs/hldoctp.cxx b/cui/source/dialogs/hldoctp.cxx
index d8e5878c3a8e..a87d7710f484 100644
--- a/cui/source/dialogs/hldoctp.cxx
+++ b/cui/source/dialogs/hldoctp.cxx
@@ -39,7 +39,6 @@
sal_Char __READONLY_DATA sHash[] = "#";
sal_Char __READONLY_DATA sFileScheme[] = INET_FILE_SCHEME;
-sal_Char __READONLY_DATA sPortalFileScheme[] = "vnd.sun.star.wfs://";
sal_Char __READONLY_DATA sNewsSRVScheme[] = "news://";
// TODO news:// is nonsense
sal_Char __READONLY_DATA sHTTPScheme[] = INET_HTTP_SCHEME;
@@ -170,8 +169,7 @@ void SvxHyperlinkDocTp::GetCurentItemData ( String& aStrURL, String& aStrName,
// get data from standard-fields
aStrURL = GetCurrentURL();
- if( aStrURL.EqualsIgnoreCaseAscii( sFileScheme ) ||
- aStrURL.EqualsIgnoreCaseAscii( sPortalFileScheme ) )
+ if( aStrURL.EqualsIgnoreCaseAscii( sFileScheme ) )
aStrURL=aEmptyStr;
GetDataFromCommonFields( aStrName, aStrIntName, aStrFrame, eMode );
@@ -212,8 +210,7 @@ IMPL_LINK ( SvxHyperlinkDocTp, ClickFileopenHdl_Impl, void *, EMPTYARG )
com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0,
GetParent() );
String aOldURL( GetCurrentURL() );
- if( aOldURL.EqualsIgnoreCaseAscii( sFileScheme, 0, sizeof( sFileScheme ) - 1 ) ||
- aOldURL.EqualsIgnoreCaseAscii( sPortalFileScheme, 0, sizeof( sFileScheme ) - 1 ) )
+ if( aOldURL.EqualsIgnoreCaseAscii( sFileScheme, 0, sizeof( sFileScheme ) - 1 ) )
{
aDlg.SetDisplayDirectory( aOldURL );
}
@@ -250,15 +247,13 @@ IMPL_LINK ( SvxHyperlinkDocTp, ClickTargetHdl_Impl, void *, EMPTYARG )
if ( GetPathType ( maStrURL ) == Type_ExistsFile ||
maStrURL == aEmptyStr ||
maStrURL.EqualsIgnoreCaseAscii( sFileScheme ) ||
- maStrURL.EqualsIgnoreCaseAscii( sPortalFileScheme ) ||
maStrURL.SearchAscii( sHash ) == 0 )
{
mpMarkWnd->SetError( LERR_NOERROR );
EnterWait();
- if ( maStrURL.EqualsIgnoreCaseAscii( sFileScheme ) ||
- maStrURL.EqualsIgnoreCaseAscii( sPortalFileScheme ) )
+ if ( maStrURL.EqualsIgnoreCaseAscii( sFileScheme ) )
mpMarkWnd->RefreshTree ( aEmptyStr );
else
mpMarkWnd->RefreshTree ( maStrURL );
@@ -305,8 +300,7 @@ IMPL_LINK ( SvxHyperlinkDocTp, TimeoutHdl_Impl, Timer *, EMPTYARG )
{
EnterWait();
- if ( maStrURL.EqualsIgnoreCaseAscii( sFileScheme ) ||
- maStrURL.EqualsIgnoreCaseAscii( sPortalFileScheme ) )
+ if ( maStrURL.EqualsIgnoreCaseAscii( sFileScheme ) )
mpMarkWnd->RefreshTree ( aEmptyStr );
else
mpMarkWnd->RefreshTree ( maStrURL );
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index f1651b0bd1dd..b63d9afc647e 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -129,6 +129,13 @@
#include <svx/drawitem.hxx>
#include <rtl/uri.hxx>
+#ifdef LINUX
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#endif
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::container;
@@ -2195,6 +2202,28 @@ void OfaTreeOptionsDialog::Initialize( const Reference< XFrame >& _xFrame )
if ( nPageId == RID_SVXPAGE_INET_MOZPLUGIN )
continue;
#endif
+#ifdef LINUX
+ // Disable Mozilla Plug-in tab-page on Linux if we find a
+ // globally installed plugin
+ if ( nPageId == RID_SVXPAGE_INET_MOZPLUGIN ) {
+ struct stat sb;
+ char *p;
+ bool bHaveSystemWidePlugin = false;
+ char mozpaths[]="/usr/lib/mozilla/plugins/libnpsoplugin.so:/usr/lib/firefox/plugins/libnpsoplugin.so:/usr/lib/mozilla-firefox/plugins/libnpsoplugin.so:/usr/lib/iceweasel/plugins/libnpsoplugin.so:/usr/lib/iceape/plugins/libnpsoplugin.so:/usr/lib/browser-plugins/libnpsoplugin.so:/usr/lib64/browser-plugins/libnpsoplugin.so";
+
+ p = strtok(mozpaths, ":");
+ while (p != NULL) {
+ if (stat(p, &sb) != -1) {
+ bHaveSystemWidePlugin = true;
+ break;
+ }
+ p = strtok(NULL, ":");
+ }
+
+ if (bHaveSystemWidePlugin == true)
+ continue;
+ }
+#endif
AddTabPage( nPageId, rInetArray.GetString(i), nGroup );
}
}
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index 696c1c62cb23..1f166b8f8d41 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -3386,11 +3386,6 @@ USHORT* SvxCharPositionPage::GetRanges()
}
// -----------------------------------------------------------------------
-#define ENABLE_AND_CHECK( aCheckBox ) \
- if ( !aCheckBox.IsEnabled() ) \
- aCheckBox.Enable(); \
- aCheckBox.Check( TRUE )
-
void SvxCharPositionPage::Reset( const SfxItemSet& rSet )
{
String sUser = GetUserData();
@@ -3431,6 +3426,7 @@ void SvxCharPositionPage::Reset( const SfxItemSet& rSet )
m_aFontSizeEdit.Enable();
short nFac;
+ sal_Bool bAutomatic(sal_False);
if ( nEsc > 0 )
{
@@ -3438,8 +3434,8 @@ void SvxCharPositionPage::Reset( const SfxItemSet& rSet )
m_aHighPosBtn.Check( TRUE );
if ( nEsc == DFLT_ESC_AUTO_SUPER )
{
- ENABLE_AND_CHECK( m_aHighLowRB );
nEsc = DFLT_ESC_SUPER;
+ bAutomatic = sal_True;
}
}
else
@@ -3448,10 +3444,15 @@ void SvxCharPositionPage::Reset( const SfxItemSet& rSet )
m_aLowPosBtn.Check( TRUE );
if ( nEsc == DFLT_ESC_AUTO_SUB )
{
- ENABLE_AND_CHECK( m_aHighLowRB );
nEsc = DFLT_ESC_SUB;
+ bAutomatic = sal_True;
}
}
+ if (!m_aHighLowRB.IsEnabled())
+ {
+ m_aHighLowRB.Enable();
+ }
+ m_aHighLowRB.Check(bAutomatic);
if ( m_aHighLowRB.IsChecked() )
{
diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx
index 04bef19278b1..9d5188ceffc4 100644
--- a/dbaccess/source/core/api/KeySet.cxx
+++ b/dbaccess/source/core/api/KeySet.cxx
@@ -367,15 +367,17 @@ void OKeySet::construct(const Reference< XResultSet>& _xDriverSet,const ::rtl::O
}
Sequence< ::rtl::OUString> aBestColumnNames;
- if ( aBestRowColumnNames.empty() )
+ if ( !aBestRowColumnNames.empty() )
{
- if ( xKeyColumns.is() )
- aBestColumnNames = xKeyColumns->getElementNames();
- }
- else
aBestColumnNames = Sequence< ::rtl::OUString>(&aBestRowColumnNames[0],aBestRowColumnNames.size());
+ ::dbaccess::getColumnPositions(xSup->getColumns(),aBestColumnNames,m_sUpdateTableName,(*m_pKeyColumnNames));
+ }
- ::dbaccess::getColumnPositions(xSup->getColumns(),aBestColumnNames,m_sUpdateTableName,(*m_pKeyColumnNames));
+ if (m_pKeyColumnNames->empty() && xKeyColumns.is())
+ {
+ aBestColumnNames = xKeyColumns->getElementNames();
+ ::dbaccess::getColumnPositions(xSup->getColumns(),aBestColumnNames,m_sUpdateTableName,(*m_pKeyColumnNames));
+ }
::dbaccess::getColumnPositions(xSup->getColumns(),xSourceColumns->getElementNames(),m_sUpdateTableName,(*m_pColumnNames));
::dbaccess::getColumnPositions(xSup->getColumns(),aParameterColumns,m_sUpdateTableName,(*m_pParameterNames));
diff --git a/default_images/framework/res/folder_32.png b/default_images/framework/res/folder_32.png
index 95efe64263df..1c7774b28571 100644
--- a/default_images/framework/res/folder_32.png
+++ b/default_images/framework/res/folder_32.png
Binary files differ
diff --git a/default_images/framework/res/folder_32_hc.png b/default_images/framework/res/folder_32_hc.png
new file mode 100644
index 000000000000..04513f55b9f1
--- /dev/null
+++ b/default_images/framework/res/folder_32_hc.png
Binary files differ
diff --git a/default_images/framework/res/templates_32.png b/default_images/framework/res/templates_32.png
new file mode 100644
index 000000000000..584c3b2a28ac
--- /dev/null
+++ b/default_images/framework/res/templates_32.png
Binary files differ
diff --git a/default_images/framework/res/templates_32_hc.png b/default_images/framework/res/templates_32_hc.png
new file mode 100644
index 000000000000..de0a9f5b1a5a
--- /dev/null
+++ b/default_images/framework/res/templates_32_hc.png
Binary files differ
diff --git a/default_images/res/odb_32_hc.png b/default_images/res/odb_32_hc.png
new file mode 100644
index 000000000000..70068a091c9c
--- /dev/null
+++ b/default_images/res/odb_32_hc.png
Binary files differ
diff --git a/default_images/res/odf_32_hc.png b/default_images/res/odf_32_hc.png
new file mode 100644
index 000000000000..b63b9d7450cb
--- /dev/null
+++ b/default_images/res/odf_32_hc.png
Binary files differ
diff --git a/default_images/res/odg_32_hc.png b/default_images/res/odg_32_hc.png
new file mode 100644
index 000000000000..ee8a0d1cf52a
--- /dev/null
+++ b/default_images/res/odg_32_hc.png
Binary files differ
diff --git a/default_images/res/odp_32_hc.png b/default_images/res/odp_32_hc.png
new file mode 100644
index 000000000000..7372ba53e266
--- /dev/null
+++ b/default_images/res/odp_32_hc.png
Binary files differ
diff --git a/default_images/res/ods_32_hc.png b/default_images/res/ods_32_hc.png
new file mode 100644
index 000000000000..fde5d70e18de
--- /dev/null
+++ b/default_images/res/ods_32_hc.png
Binary files differ
diff --git a/default_images/res/odt_32_hc.png b/default_images/res/odt_32_hc.png
new file mode 100644
index 000000000000..e9487262f8a5
--- /dev/null
+++ b/default_images/res/odt_32_hc.png
Binary files differ
diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh
index 73653092f59c..ebbdeb9eabdb 100644
--- a/desktop/scripts/soffice.sh
+++ b/desktop/scripts/soffice.sh
@@ -114,10 +114,6 @@ if [ -f /etc/adabasrc ]; then
. /etc/adabasrc
fi
-# Set PATH so that crash_report is found:
-PATH=$sd_prog${PATH+:$PATH}
-export PATH
-
# execute soffice binary
"$sd_prog/$sd_binary" "$@" &
trap 'kill -9 $!' TERM
diff --git a/desktop/scripts/unopkg.sh b/desktop/scripts/unopkg.sh
index 9e74f34d0e57..0fe319735c06 100644
--- a/desktop/scripts/unopkg.sh
+++ b/desktop/scripts/unopkg.sh
@@ -70,10 +70,6 @@ unset XENVIRONMENT
# uncomment line below if you encounter problems starting soffice on your system
# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
-# Set PATH so that crash_report is found:
-PATH=$sd_prog${PATH+:$PATH}
-export PATH
-
# execute binary
exec "$sd_prog/unopkg.bin" "$@" \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"
diff --git a/desktop/source/app/appfirststart.cxx b/desktop/source/app/appfirststart.cxx
index c48805fcfeb7..2f0d4ab9e538 100644
--- a/desktop/source/app/appfirststart.cxx
+++ b/desktop/source/app/appfirststart.cxx
@@ -108,6 +108,9 @@ OUString Desktop::GetLicensePath()
/* Check if we need to accept license. */
sal_Bool Desktop::LicenseNeedsAcceptance()
{
+ // Don't show a license
+ return sal_False;
+/*
sal_Bool bShowLicense = sal_True;
sal_Int32 nOpenSourceContext = 0;
try
@@ -122,6 +125,7 @@ sal_Bool Desktop::LicenseNeedsAcceptance()
bShowLicense = sal_False;
return bShowLicense;
+*/
}
/* Local function - was the wizard completed already? */
diff --git a/desktop/source/app/makefile.mk b/desktop/source/app/makefile.mk
index d9db7c163481..83bec9011283 100644
--- a/desktop/source/app/makefile.mk
+++ b/desktop/source/app/makefile.mk
@@ -65,6 +65,7 @@ SHL1LIBS = $(SLB)$/mig.lib
SHL1STDLIBS = \
$(COMPHELPERLIB) \
+ $(CONFIGMGRLIB) \
$(CPPUHELPERLIB) \
$(CPPULIB) \
$(I18NISOLANGLIB) \
diff --git a/desktop/source/deployment/manager/dp_manager.cxx b/desktop/source/deployment/manager/dp_manager.cxx
index 165efbaeca5a..3f13cb021aae 100644
--- a/desktop/source/deployment/manager/dp_manager.cxx
+++ b/desktop/source/deployment/manager/dp_manager.cxx
@@ -542,11 +542,19 @@ OUString PackageManagerImpl::insertToActivationLayer(
{
// inflate content:
::rtl::OUStringBuffer buf;
- buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.zip://") );
- buf.append( ::rtl::Uri::encode( sourceContent.getURL(),
- rtl_UriCharClassRegName,
- rtl_UriEncodeIgnoreEscapes,
- RTL_TEXTENCODING_UTF8 ) );
+ if (!sourceContent.isFolder())
+ {
+ buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.zip://") );
+ buf.append( ::rtl::Uri::encode( sourceContent.getURL(),
+ rtl_UriCharClassRegName,
+ rtl_UriEncodeIgnoreEscapes,
+ RTL_TEXTENCODING_UTF8 ) );
+ }
+ else
+ {
+ //Folder. No need to unzip, just copy
+ buf.append(sourceContent.getURL());
+ }
buf.append( static_cast<sal_Unicode>('/') );
sourceContent = ::ucbhelper::Content(
buf.makeStringAndClear(), xCmdEnv );
diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx
index bb93f78689b6..4a144f3fdf20 100644
--- a/desktop/source/deployment/misc/dp_platform.cxx
+++ b/desktop/source/deployment/misc/dp_platform.cxx
@@ -47,8 +47,11 @@
#define PLATFORM_LINUX_MIPS_EL "linux_mips_el"
#define PLATFORM_LINUX_MIPS_EB "linux_mips_eb"
#define PLATFORM_LINUX_IA64 "linux_ia64"
+#define PLATFORM_LINUX_M68K "linux_m68k"
#define PLATFORM_LINUX_S390 "linux_s390"
#define PLATFORM_LINUX_S390x "linux_s390x"
+#define PLATFORM_LINUX_HPPA "linux_hppa"
+#define PLATFORM_LINUX_ALPHA "linux_alpha"
@@ -142,10 +145,16 @@ namespace
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("MIPS_EB"));
else if (token.equals(OUSTR(PLATFORM_LINUX_IA64)))
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("IA64"));
+ else if (token.equals(OUSTR(PLATFORM_LINUX_M68K)))
+ ret = checkOSandCPU(OUSTR("Linux"), OUSTR("M68K"));
else if (token.equals(OUSTR(PLATFORM_LINUX_S390)))
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("S390"));
else if (token.equals(OUSTR(PLATFORM_LINUX_S390x)))
ret = checkOSandCPU(OUSTR("Linux"), OUSTR("S390x"));
+ else if (token.equals(OUSTR(PLATFORM_LINUX_HPPA)))
+ ret = checkOSandCPU(OUSTR("Linux"), OUSTR("HPPA"));
+ else if (token.equals(OUSTR(PLATFORM_LINUX_ALPHA)))
+ ret = checkOSandCPU(OUSTR("Linux"), OUSTR("ALPHA"));
else if (token.equals(OUSTR(PLATFORM_SOLARIS_SPARC)))
ret = checkOSandCPU(OUSTR("Solaris"), OUSTR("SPARC"));
else if (token.equals(OUSTR(PLATFORM_SOLARIS_SPARC64)))
diff --git a/desktop/source/deployment/registry/dp_registry.cxx b/desktop/source/deployment/registry/dp_registry.cxx
index c6572364aac0..c56131a1015c 100644
--- a/desktop/source/deployment/registry/dp_registry.cxx
+++ b/desktop/source/deployment/registry/dp_registry.cxx
@@ -181,6 +181,7 @@ OUString normalizeMediaType( OUString const & mediaType )
}
//______________________________________________________________________________
+
void PackageRegistryImpl::insertBackend(
Reference<deployment::XPackageRegistry> const & xBackend )
{
@@ -201,7 +202,8 @@ void PackageRegistryImpl::insertBackend(
::std::pair<t_string2registry::iterator, bool> mb_insertion(
m_mediaType2backend.insert( t_string2registry::value_type(
mediaType, xBackend ) ) );
- if (mb_insertion.second) {
+ if (mb_insertion.second)
+ {
// add parameterless media-type, too:
sal_Int32 semi = mediaType.indexOf( ';' );
if (semi >= 0) {
@@ -210,9 +212,13 @@ void PackageRegistryImpl::insertBackend(
mediaType.copy( 0, semi ), xBackend ) );
}
const OUString fileFilter( xPackageType->getFileFilter() );
+ //The package backend shall also be called to determine the mediatype
+ //(XPackageRegistry.bindPackage) when the URL points to a directory.
+ const bool bExtension = mediaType.equals(OUSTR("application/vnd.sun.star.package-bundle"));
if (fileFilter.getLength() == 0 ||
fileFilter.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("*.*") ) ||
- fileFilter.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("*") ))
+ fileFilter.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("*") ) ||
+ bExtension)
{
m_ambiguousBackends.insert( xBackend );
}
@@ -351,7 +357,10 @@ Reference<deployment::XPackageRegistry> PackageRegistryImpl::create(
}
}
- // insert bundle be:
+ // Insert bundle back-end.
+ // Always register as last, because we want to add extensions also as folders
+ // and as a default we accept every folder, which was not recognized by the other
+ // backends.
that->insertBackend(
::dp_registry::backend::bundle::create(
that, context, cachePath, readOnly, xComponentContext ) );
@@ -445,7 +454,8 @@ Reference<deployment::XPackage> PackageRegistryImpl::bindPackage(
{
::ucbhelper::Content ucbContent;
if (create_ucb_content(
- &ucbContent, url, xCmdEnv, false /* no throw */ ))
+ &ucbContent, url, xCmdEnv, false /* no throw */ )
+ && !ucbContent.isFolder())
{
OUString title( ucbContent.getPropertyValue(
StrTitle::get() ).get<OUString>() );
diff --git a/desktop/source/deployment/registry/package/dp_package.cxx b/desktop/source/deployment/registry/package/dp_package.cxx
index e45f7fb7ef73..b0b4a918c7a3 100644
--- a/desktop/source/deployment/registry/package/dp_package.cxx
+++ b/desktop/source/deployment/registry/package/dp_package.cxx
@@ -287,7 +287,7 @@ BackendImpl::BackendImpl(
m_xBundleTypeInfo->getShortDescription(),
RID_IMG_DEF_PACKAGE_BUNDLE,
RID_IMG_DEF_PACKAGE_BUNDLE_HC ) ),
- m_typeInfos( 2 )
+ m_typeInfos(2)
{
m_typeInfos[ 0 ] = m_xBundleTypeInfo;
m_typeInfos[ 1 ] = m_xLegacyBundleTypeInfo;
@@ -342,17 +342,32 @@ Reference<deployment::XPackage> BackendImpl::bindPackage_(
::ucbhelper::Content ucbContent;
if (create_ucb_content( &ucbContent, url, xCmdEnv ))
{
- const OUString title( ucbContent.getPropertyValue(
- StrTitle::get() ).get<OUString>() );
- if (title.endsWithIgnoreAsciiCaseAsciiL(
- RTL_CONSTASCII_STRINGPARAM(".oxt") ) ||
- title.endsWithIgnoreAsciiCaseAsciiL(
- RTL_CONSTASCII_STRINGPARAM(".uno.pkg") ))
- mediaType = OUSTR("application/vnd.sun.star.package-bundle");
- else if (title.endsWithIgnoreAsciiCaseAsciiL(
- RTL_CONSTASCII_STRINGPARAM(".zip") ))
- mediaType =
- OUSTR("application/vnd.sun.star.legacy-package-bundle");
+ if (ucbContent.isFolder())
+ {
+ //Every .oxt, uno.pkg file must contain a META-INF folder
+ ::ucbhelper::Content metaInfContent;
+ if (create_ucb_content(
+ &metaInfContent, makeURL( url, OUSTR("META-INF/manifest.xml") ),
+ xCmdEnv, false /* no throw */ ))
+ {
+ mediaType = OUSTR("application/vnd.sun.star.package-bundle");
+ }
+ //No support of legacy bundles, because every folder could be one.
+ }
+ else
+ {
+ const OUString title( ucbContent.getPropertyValue(
+ StrTitle::get() ).get<OUString>() );
+ if (title.endsWithIgnoreAsciiCaseAsciiL(
+ RTL_CONSTASCII_STRINGPARAM(".oxt") ) ||
+ title.endsWithIgnoreAsciiCaseAsciiL(
+ RTL_CONSTASCII_STRINGPARAM(".uno.pkg") ))
+ mediaType = OUSTR("application/vnd.sun.star.package-bundle");
+ else if (title.endsWithIgnoreAsciiCaseAsciiL(
+ RTL_CONSTASCII_STRINGPARAM(".zip") ))
+ mediaType =
+ OUSTR("application/vnd.sun.star.legacy-package-bundle");
+ }
}
if (mediaType.getLength() == 0)
throw lang::IllegalArgumentException(
@@ -1303,7 +1318,7 @@ void BackendImpl::PackageImpl::scanBundle(
{
OSL_ENSURE( 0, "### missing META-INF/manifest.xml file!" );
return;
-}
+ }
const lang::Locale officeLocale = getOfficeLocale();
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index 2181daab7454..cefc3cebf0fd 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -28,6 +28,9 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_desktop.hxx"
+#include <map>
+#include <set>
+
#include "migration.hxx"
#include "migration_impl.hxx"
#include "cfgfilter.hxx"
@@ -35,8 +38,10 @@
#include <unotools/textsearch.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/sequence.hxx>
+#include <configmgr/update.hxx>
#include <unotools/bootstrap.hxx>
#include <rtl/bootstrap.hxx>
+#include <rtl/uri.hxx>
#include <tools/config.hxx>
#include <i18npool/lang.h>
#include <tools/urlobj.hxx>
@@ -50,8 +55,6 @@
#include <com/sun/star/task/XJob.hpp>
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/configuration/backend/XLayer.hpp>
-#include <com/sun/star/configuration/backend/XSingleLayerStratum.hpp>
#include <com/sun/star/util/XRefreshable.hpp>
#include <com/sun/star/util/XChangesBatch.hpp>
#include <com/sun/star/util/XStringSubstitution.hpp>
@@ -64,8 +67,6 @@ using namespace com::sun::star::lang;
using namespace com::sun::star::beans;
using namespace com::sun::star::util;
using namespace com::sun::star::container;
-using namespace com::sun::star::configuration;
-using namespace com::sun::star::configuration::backend;
using com::sun::star::uno::Exception;
using namespace com::sun::star;
@@ -154,18 +155,15 @@ MigrationImpl::~MigrationImpl()
sal_Bool MigrationImpl::doMigration()
{
- // compile file and service list for migration
- m_vrFileList = compileFileList();
- m_vrServiceList = compileServiceList();
+ // compile file list for migration
+ m_vrFileList = compileFileList();
sal_Bool result = sal_False;
try{
copyFiles();
// execute the migration items from Setup.xcu
- // and refresh the cache
copyConfig();
- refresh();
// execute custom migration services from Setup.xcu
// and refresh the cache
@@ -232,6 +230,7 @@ static void insertSorted(migrations_available& rAvailableMigrations, supported_m
{
rAvailableMigrations.insert(pIter, aSupportedMigration );
bInserted = true;
+ break; // i111193: insert invalidates iterator!
}
++pIter;
}
@@ -332,13 +331,6 @@ migrations_vr MigrationImpl::readMigrationSteps(const ::rtl::OUString& rMigratio
tmpStep.excludeExtensions.push_back(tmpSeq[j]);
}
- // config components
- if (tmpAccess->getByName(OUString::createFromAscii("ServiceConfigComponents")) >>= tmpSeq)
- {
- for (sal_Int32 j=0; j<tmpSeq.getLength(); j++)
- tmpStep.configComponents.push_back(tmpSeq[j]);
- }
-
// generic service
tmpAccess->getByName(OUString::createFromAscii("MigrationService")) >>= tmpStep.service;
@@ -525,77 +517,87 @@ strings_vr MigrationImpl::compileFileList()
return vrResult;
}
+namespace {
-void MigrationImpl::copyConfig()
-{
- try {
- // 1. get a list of all components from hierachy browser
- uno::Reference< XJob > xBrowser(m_xFactory->createInstance(
- OUString::createFromAscii("com.sun.star.configuration.backend.LocalHierarchyBrowser")), uno::UNO_QUERY_THROW);
-
- uno::Sequence< NamedValue > seqArgs(2);
- seqArgs[0] = NamedValue(
- OUString::createFromAscii("LayerDataUrl"),
- uno::makeAny(m_aInfo.userdata + OUString::createFromAscii("/user/registry")));
- seqArgs[1] = NamedValue(
- OUString::createFromAscii("FetchComponentNames"),
- uno::makeAny(sal_True));
-
- // execute the search
- uno::Any aResult = xBrowser->execute(seqArgs);
- uno::Sequence< OUString > seqComponents;
- aResult >>= seqComponents;
- OSL_ENSURE(seqComponents.getLength()>0, "MigrationImpl::copyConfig(): no config components available");
-
- // 2. create an importer
- uno::Reference< XJob > xImporter(m_xFactory->createInstance(
- OUString::createFromAscii("com.sun.star.configuration.backend.LocalDataImporter")), uno::UNO_QUERY_THROW);
-
- // 3. for each migration step...
- uno::Sequence< NamedValue > importerArgs(3);
- importerArgs[0] = NamedValue(
- OUString::createFromAscii("LayerDataUrl"),
- uno::makeAny(m_aInfo.userdata + OUString::createFromAscii("/user/registry")));
- importerArgs[1] = NamedValue(
- OUString::createFromAscii("LayerFilter"),
- uno::Any());
- importerArgs[2] = NamedValue(
- OUString::createFromAscii("Component"),
- uno::Any());
-
- migrations_v::const_iterator i_mig = m_vrMigrations->begin();
- while (i_mig != m_vrMigrations->end())
- {
- // a. create config filter for step
- uno::Reference< XInitialization > xFilter(
- new CConfigFilter(&(i_mig->includeConfig), &(i_mig->excludeConfig)));
- importerArgs[1].Value = uno::makeAny(xFilter);
+struct componentParts {
+ std::set< rtl::OUString > includedPaths;
+ std::set< rtl::OUString > excludedPaths;
+};
- // b. run each importer with config filter
- for (sal_Int32 i=0; i<seqComponents.getLength(); i++)
- {
- OUString component = seqComponents[i];
- importerArgs[2].Value = uno::makeAny(seqComponents[i]);
- try {
- aResult = xImporter->execute(importerArgs);
- Exception myException;
- if (aResult >>= myException) throw myException;
- } catch(Exception& aException) {
- OString aMsg("Exception in config layer import.\ncomponent: ");
- aMsg += OUStringToOString(seqComponents[i], RTL_TEXTENCODING_ASCII_US);
- aMsg += "\nmessage: ";
- aMsg += OUStringToOString(aException.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
- }
+typedef std::map< rtl::OUString, componentParts > Components;
+
+bool getComponent(rtl::OUString const & path, rtl::OUString * component) {
+ OSL_ASSERT(component != 0);
+ if (path.getLength() == 0 || path[0] != '/') {
+ OSL_TRACE(
+ ("configuration migration in/exclude path %s ignored (does not"
+ " start with slash)"),
+ rtl::OUStringToOString(path, RTL_TEXTENCODING_UTF8).getStr());
+ return false;
+ }
+ sal_Int32 i = path.indexOf('/', 1);
+ *component = i < 0 ? path.copy(1) : path.copy(1, i - 1);
+ return true;
+}
+
+}
+
+void MigrationImpl::copyConfig() {
+ Components comps;
+ for (migrations_v::const_iterator i(m_vrMigrations->begin());
+ i != m_vrMigrations->end(); ++i)
+ {
+ for (strings_v::const_iterator j(i->includeConfig.begin());
+ j != i->includeConfig.end(); ++j)
+ {
+ rtl::OUString comp;
+ if (getComponent(*j, &comp)) {
+ comps[comp].includedPaths.insert(*j);
+ }
+ }
+ for (strings_v::const_iterator j(i->excludeConfig.begin());
+ j != i->excludeConfig.end(); ++j)
+ {
+ rtl::OUString comp;
+ if (getComponent(*j, &comp)) {
+ comps[comp].excludedPaths.insert(*j);
}
- i_mig++;
}
}
- catch (Exception& e)
- {
- OString aMsg("Exception in config layer import.\nmessage: ");
- aMsg += OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
- OSL_ENSURE(sal_False, aMsg.getStr());
+ for (Components::const_iterator i(comps.begin()); i != comps.end(); ++i) {
+ if (!i->second.includedPaths.empty()) {
+ rtl::OUStringBuffer buf(m_aInfo.userdata);
+ buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/user/registry/data"));
+ sal_Int32 n = 0;
+ do {
+ rtl::OUString seg(i->first.getToken(0, '.', n));
+ rtl::OUString enc(
+ rtl::Uri::encode(
+ seg, rtl_UriCharClassPchar, rtl_UriEncodeStrict,
+ RTL_TEXTENCODING_UTF8));
+ if (enc.getLength() == 0 && seg.getLength() != 0) {
+ OSL_TRACE(
+ ("configuration migration component %s ignored (cannot"
+ " be encoded as file path)"),
+ rtl::OUStringToOString(
+ i->first, RTL_TEXTENCODING_UTF8).getStr());
+ goto next;
+ }
+ buf.append(sal_Unicode('/'));
+ buf.append(enc);
+ } while (n >= 0);
+ buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(".xcu"));
+ configmgr::update::insertModificationXcuFile(
+ buf.makeStringAndClear(), i->second.includedPaths,
+ i->second.excludedPaths);
+ } else {
+ OSL_TRACE(
+ ("configuration migration component %s ignored (only excludes,"
+ " no includes)"),
+ rtl::OUStringToOString(
+ i->first, RTL_TEXTENCODING_UTF8).getStr());
+ }
+ next:;
}
}
@@ -704,17 +706,8 @@ void MigrationImpl::copyFiles()
void MigrationImpl::runServices()
{
- //create stratum for old user layer
- OUString aOldLayerURL = m_aInfo.userdata;
- aOldLayerURL += OUString::createFromAscii("/user/registry");
- OUString aStratumSvc = OUString::createFromAscii("com.sun.star.configuration.backend.LocalSingleStratum");
- uno::Sequence< uno::Any > stratumArgs(1);
- stratumArgs[0] = uno::makeAny(aOldLayerURL);
- uno::Reference< XSingleLayerStratum> xStartum( m_xFactory->createInstanceWithArguments(
- aStratumSvc, stratumArgs), uno::UNO_QUERY);
-
// Build argument array
- uno::Sequence< uno::Any > seqArguments(4);
+ uno::Sequence< uno::Any > seqArguments(3);
seqArguments[0] = uno::makeAny(NamedValue(
OUString::createFromAscii("Productname"),
uno::makeAny(m_aInfo.productname)));
@@ -735,34 +728,13 @@ void MigrationImpl::runServices()
try
{
- // create access to old configuration components in the user layer
- // that were requested by the migration service
- uno::Sequence< NamedValue > seqComponents(i_mig->configComponents.size());
- strings_v::const_iterator i_comp = i_mig->configComponents.begin();
- sal_Int32 i = 0;
- while (i_comp != i_mig->configComponents.end() && xStartum.is())
- {
- // create Layer for i_comp
- seqComponents[i] = NamedValue(
- *i_comp, uno::makeAny(xStartum->getLayer(*i_comp, OUString())));
-
- // next component
- i_comp++;
- i++;
- }
-
- // set old config argument
- seqArguments[2] = uno::makeAny(NamedValue(
- OUString::createFromAscii("OldConfiguration"),
- uno::makeAny(seqComponents)));
-
// set black list for extension migration
uno::Sequence< rtl::OUString > seqExtBlackList;
sal_uInt32 nSize = i_mig->excludeExtensions.size();
if ( nSize > 0 )
seqExtBlackList = comphelper::arrayToSequence< ::rtl::OUString >(
&i_mig->excludeExtensions[0], nSize );
- seqArguments[3] = uno::makeAny(NamedValue(
+ seqArguments[2] = uno::makeAny(NamedValue(
OUString::createFromAscii("ExtensionBlackList"),
uno::makeAny( seqExtBlackList )));
@@ -791,17 +763,4 @@ void MigrationImpl::runServices()
}
}
-
-strings_vr MigrationImpl::compileServiceList()
-{
- strings_vr vrResult(new strings_v);
- migrations_v::const_iterator i_migr = m_vrMigrations->begin();
- while (i_migr != m_vrMigrations->end())
- {
- vrResult->push_back(i_migr->service);
- i_migr++;
- }
- return vrResult;
-}
-
} // namespace desktop
diff --git a/desktop/source/migration/migration_impl.hxx b/desktop/source/migration/migration_impl.hxx
index b40de510261d..8cad1cce4b16 100644
--- a/desktop/source/migration/migration_impl.hxx
+++ b/desktop/source/migration/migration_impl.hxx
@@ -64,7 +64,6 @@ struct migration_step
strings_v excludeFiles;
strings_v includeConfig;
strings_v excludeConfig;
- strings_v configComponents;
strings_v includeExtensions;
strings_v excludeExtensions;
rtl::OUString service;
@@ -92,8 +91,6 @@ private:
migrations_vr m_vrMigrations; // list of all migration specs from config
install_info m_aInfo; // info about the version being migrated
strings_vr m_vrFileList; // final list of files to be copied
- strings_vr m_vrConfigList; // final list of nodes to be copied
- strings_vr m_vrServiceList; // final list of services to be called
// functions to control the migration process
bool readAvailableMigrations(migrations_available&);
@@ -101,8 +98,6 @@ private:
sal_Int32 findPreferedMigrationProcess(const migrations_available&);
install_info findInstallation(const strings_v& rVersions);
strings_vr compileFileList();
- strings_vr compileConfigList();
- strings_vr compileServiceList();
// helpers
void substract(strings_v& va, const strings_v& vb_c) const;
diff --git a/desktop/source/splash/makefile.mk b/desktop/source/splash/makefile.mk
index 89609687438c..2f163fe7b9d6 100644
--- a/desktop/source/splash/makefile.mk
+++ b/desktop/source/splash/makefile.mk
@@ -63,6 +63,7 @@ SHL1STDLIBS= \
$(SVLLIB) \
$(SVTOOLLIB) \
$(COMPHELPERLIB) \
+ $(CONFIGMGRLIB) \
$(UNOTOOLSLIB) \
$(TOOLSLIB) \
$(UCBHELPERLIB) \
diff --git a/editeng/inc/editeng/svxacorr.hxx b/editeng/inc/editeng/svxacorr.hxx
index c900228cc053..1ef6bad09d9b 100644
--- a/editeng/inc/editeng/svxacorr.hxx
+++ b/editeng/inc/editeng/svxacorr.hxx
@@ -209,6 +209,8 @@ class EDITENG_DLLPUBLIC SvxAutoCorrect
SvxAutoCorrLastFileAskTable_Impl* pLastFileTable;
CharClass* pCharClass;
+ bool bRunNext;
+
LanguageType eCharClassLang;
long nFlags;
@@ -374,6 +376,8 @@ public:
xub_StrLen nSttPos, xub_StrLen nEndPos,
LanguageType eLang = LANGUAGE_SYSTEM);
+ bool HasRunNext() { return bRunNext; }
+
static long GetDefaultFlags();
// returns TRUE for charcters where the function
diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index 94981dc32e73..b5a43ae8a948 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -1129,6 +1129,26 @@ namespace accessibility
return aPoint;
}
+ // --> OD 2009-12-16 #i88070#
+ // fallback to parent's <XAccessibleContext> instance
+ else
+ {
+ uno::Reference< XAccessibleContext > xParentContext = xParent->getAccessibleContext();
+ if ( xParentContext.is() )
+ {
+ uno::Reference< XAccessibleComponent > xParentContextComponent( xParentContext, uno::UNO_QUERY );
+ if( xParentContextComponent.is() )
+ {
+ awt::Point aRefPoint = xParentContextComponent->getLocationOnScreen();
+ awt::Point aPoint = getLocation();
+ aPoint.X += aRefPoint.X;
+ aPoint.Y += aRefPoint.Y;
+
+ return aPoint;
+ }
+ }
+ }
+ // <--
}
throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Cannot access parent")),
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 212fb8ff9446..8621f173c250 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -49,6 +49,7 @@
#include <eerdll2.hxx>
#include <editeng/eerdll.hxx>
#include <editeng.hrc>
+#include <editeng/acorrcfg.hxx>
#include <editeng/flditem.hxx>
#include <editeng/txtrange.hxx>
#include <vcl/graph.hxx>
@@ -1144,8 +1145,10 @@ sal_Bool EditEngine::PostKeyEvent( const KeyEvent& rKeyEvent, EditView* pEditVie
xub_Unicode nCharCode = rKeyEvent.GetCharCode();
pEditView->pImpEditView->DrawSelection();
// Autokorrektur ?
+ SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect();
if ( ( pImpEditEngine->GetStatus().DoAutoCorrect() ) &&
- SvxAutoCorrect::IsAutoCorrectChar( nCharCode ) )
+ ( SvxAutoCorrect::IsAutoCorrectChar( nCharCode ) ||
+ pAutoCorrect->HasRunNext() ) )
{
aCurSel = pImpEditEngine->AutoCorrect( aCurSel, nCharCode, !pEditView->IsInsertMode() );
}
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 2631c71a6b17..64343517c69f 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -363,7 +363,7 @@ SvxAutoCorrect::SvxAutoCorrect( const String& rShareAutocorrFile,
sUserAutoCorrFile( rUserAutocorrFile ),
pLangTable( new SvxAutoCorrLanguageTable_Impl ),
pLastFileTable( new SvxAutoCorrLastFileAskTable_Impl ),
- pCharClass( 0 ),
+ pCharClass( 0 ), bRunNext( false ),
cStartDQuote( 0 ), cEndDQuote( 0 ), cStartSQuote( 0 ), cEndSQuote( 0 )
{
nFlags = SvxAutoCorrect::GetDefaultFlags();
@@ -380,7 +380,7 @@ SvxAutoCorrect::SvxAutoCorrect( const SvxAutoCorrect& rCpy )
pLangTable( new SvxAutoCorrLanguageTable_Impl ),
pLastFileTable( new SvxAutoCorrLastFileAskTable_Impl ),
- pCharClass( 0 ),
+ pCharClass( 0 ), bRunNext( false ),
nFlags( rCpy.nFlags & ~(ChgWordLstLoad|CplSttLstLoad|WrdSttLstLoad)),
cStartDQuote( rCpy.cStartDQuote ), cEndDQuote( rCpy.cEndDQuote ),
@@ -669,7 +669,7 @@ BOOL SvxAutoCorrect::FnAddNonBrkSpace(
// Check the presence of "://" in the word
xub_StrLen nStrPos = rTxt.Search( String::CreateFromAscii( "://" ), nSttWdPos + 1 );
- if ( STRING_NOTFOUND == nStrPos )
+ if ( STRING_NOTFOUND == nStrPos && nEndPos > 0 )
{
// Check the previous char
sal_Unicode cPrevChar = rTxt.GetChar( nEndPos - 1 );
@@ -693,9 +693,12 @@ BOOL SvxAutoCorrect::FnAddNonBrkSpace(
// Add the non-breaking space at the end pos
if ( bHasSpace )
rDoc.Insert( nPos, CHAR_HARDBLANK );
+ bRunNext = true;
bRet = true;
}
}
+ else if ( chars.indexOf( sal_Unicode( cPrevChar ) ) != -1 )
+ bRunNext = true;
}
}
else if ( cChar == '/' )
@@ -1189,6 +1192,9 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
BOOL bInsert )
{
ULONG nRet = 0;
+ bool bIsNextRun = bRunNext;
+ bRunNext = false; // if it was set, then it has to be turned off
+
do{ // only for middle check loop !!
if( cChar )
{
@@ -1227,10 +1233,39 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
rDoc.Replace( nInsPos, cChar );
// Hardspaces autocorrection
- if ( NeedsHardspaceAutocorr( cChar ) && IsAutoCorrFlag( AddNonBrkSpace ) &&
- FnAddNonBrkSpace( rDoc, rTxt, 0, nInsPos, rDoc.GetLanguage( nInsPos, FALSE ) ) )
+ if ( IsAutoCorrFlag( AddNonBrkSpace ) )
{
- nRet = AddNonBrkSpace;
+ if ( NeedsHardspaceAutocorr( cChar ) &&
+ FnAddNonBrkSpace( rDoc, rTxt, 0, nInsPos, rDoc.GetLanguage( nInsPos, FALSE ) ) )
+ {
+ nRet = AddNonBrkSpace;
+ }
+ else if ( bIsNextRun && !IsAutoCorrectChar( cChar ) )
+ {
+ // Remove the NBSP if it wasn't an autocorrection
+ if ( NeedsHardspaceAutocorr( rTxt.GetChar( nInsPos - 1 ) ) &&
+ cChar != ' ' && cChar != '\t' && cChar != CHAR_HARDBLANK )
+ {
+ // Look for the last HARD_SPACE
+ xub_StrLen nPos = nInsPos - 1;
+ bool bFound = false;
+ while ( nPos != STRING_NOTFOUND && !bFound )
+ {
+ sal_Unicode cTmpChar = rTxt.GetChar( nPos );
+ if ( cTmpChar == CHAR_HARDBLANK )
+ bFound = true;
+ else if ( !NeedsHardspaceAutocorr( cTmpChar ) )
+ nPos = STRING_NOTFOUND;
+ nPos--;
+ }
+
+ if ( bFound && nPos != STRING_NOTFOUND )
+ {
+ rDoc.Delete( nPos + 1, nPos + 2 );
+ nRet = AddNonBrkSpace;
+ }
+ }
+ }
}
}
diff --git a/extensions/source/activex/main/so_activex.cpp b/extensions/source/activex/main/so_activex.cpp
index 9c10fadadb06..b5793f6c7274 100644
--- a/extensions/source/activex/main/so_activex.cpp
+++ b/extensions/source/activex/main/so_activex.cpp
@@ -44,8 +44,10 @@ const REGSAM n32KeyAccess = KEY_ALL_ACCESS;
#ifdef _AMD64_
const BOOL bX64 = TRUE;
+#define REG_DELETE_KEY_A( key, aPath, nKeyAccess ) RegDeleteKeyExA( key, aPath, nKeyAccess, 0 )
#else
const BOOL bX64 = FALSE;
+#define REG_DELETE_KEY_A( key, aPath, nKeyAccess ) RegDeleteKeyA( key, aPath )
#endif
// 10.11.2009 tkr: MinGW doesn't know anything about RegDeleteKeyExA if WINVER < 0x0502.
@@ -363,7 +365,7 @@ HRESULT DeleteKeyTree( HKEY hkey, const char* pPath, REGSAM nKeyAccess )
RegCloseKey( hkey1 ),hkey1= NULL;
// delete the key itself
- return RegDeleteKeyExA( hkey, pPath, nKeyAccess & ( KEY_WOW64_64KEY | KEY_WOW64_32KEY ), 0 );
+ return REG_DELETE_KEY_A( hkey, pPath, nKeyAccess & ( KEY_WOW64_64KEY | KEY_WOW64_32KEY ) );
}
STDAPI DllUnregisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAccess )
diff --git a/extensions/source/nsplugin/source/nsplugin.rc b/extensions/source/nsplugin/source/nsplugin.rc
index a97db09665e0..7d4b60b5bdad 100644
--- a/extensions/source/nsplugin/source/nsplugin.rc
+++ b/extensions/source/nsplugin/source/nsplugin.rc
@@ -26,5 +26,5 @@
************************************************************************/
#define ADDITIONAL_VERINFO1 value "FileExtents", "sdc|sds|sda|sdd|sdp|smf|vor|sgl|sdw|sxc|stc|sxd|std|sxi|sti|sxm|sxw|sxg|stw|odt|ott|odm|oth|ods|ots|odg|otg|odp|otp|odf\0"\
value "FileOpenName", "StarCalc 3.0 - 5.0|StarChart 3.0 - 5.0|StarDraw 3.0 - 5.0|StarImpress 3.0 - 5.0|StarImpress-packed 3.0 - 5.0|StarMath 3.0 - 5.0|StarWriter Template 3.0 - 5.0|StarWriter Global 3.0 - 5.0|StarWriter 3.0 - 5.0|StarOffice 6.0/7 Spreadsheet|StarOffice 6.0/7 Spreadsheet Template|StarOffice 6.0/7 Drawing|StarOffice 6.0/7 Drawing Template|StarOffice 6.0/7 Presentation|StarOffice 6.0/7 Presentation Template|StarOffice 6.0/7 Formula|StarOffice 6.0/7 Text Document|StarOffice 6.0/7 Master Document|StarOffice 6.0/7 Text Document Template|OpenDocument Text|OpenDocument Text Template|OpenDocument Master Document|HTML Document Template|OpenDocument Spreadsheet|OpenDocument Spreadsheet Template|OpenDocument Drawing|OpenDocument Drawing Template|OpenDocument Presentation|OpenDocument Presentation Template|OpenDocument Formula\0"
-#define ADDITIONAL_VERINFO2 value "FileDescription", "StarOffice/StarSuite Plug-in handles all its documents" value "ProductName", "StarOffice/StarSuite Plug-in" value "MIMEType", "application/vnd.stardivision.calc|application/vnd.stardivision.chart|application/vnd.stardivision.draw|application/vnd.stardivision.impress|application/vnd.stardivision.impress-packed|application/vnd.stardivision.math|application/vnd.stardivision.writer|application/vnd.stardivision.writer-global|application/vnd.staroffice.writer|application/vnd.sun.xml.calc|application/vnd.sun.xml.calc.template|application/vnd.sun.xml.draw|application/vnd.sun.xml.draw.template|"
+#define ADDITIONAL_VERINFO2 value "FileDescription", "Oracle Open Office Plug-in handles all its documents" value "ProductName", "Oracle Open Office Plug-in" value "MIMEType", "application/vnd.stardivision.calc|application/vnd.stardivision.chart|application/vnd.stardivision.draw|application/vnd.stardivision.impress|application/vnd.stardivision.impress-packed|application/vnd.stardivision.math|application/vnd.stardivision.writer|application/vnd.stardivision.writer-global|application/vnd.staroffice.writer|application/vnd.sun.xml.calc|application/vnd.sun.xml.calc.template|application/vnd.sun.xml.draw|application/vnd.sun.xml.draw.template|"
#define ADDITIONAL_VERINFO3 "application/vnd.sun.xml.impress|application/vnd.sun.xml.impress.template|application/vnd.sun.xml.math|application/vnd.sun.xml.writer|application/vnd.sun.xml.writer.global|application/vnd.sun.xml.writer.template|application/vnd.oasis.opendocument.text|application/vnd.oasis.opendocument.text-template|application/vnd.oasis.opendocument.text-master|application/vnd.oasis.opendocument.text-web|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template|application/vnd.oasis.opendocument.graphics|application/vnd.oasis.opendocument.graphics-template|application/vnd.oasis.opendocument.presentation|application/vnd.oasis.opendocument.presentation-template|application/vnd.oasis.opendocument.formula\0"
diff --git a/extensions/source/nsplugin/source/so_env.cxx b/extensions/source/nsplugin/source/so_env.cxx
index 36a2b3f3abec..4cce0f98cd4f 100644
--- a/extensions/source/nsplugin/source/so_env.cxx
+++ b/extensions/source/nsplugin/source/so_env.cxx
@@ -31,6 +31,9 @@
#ifdef UNIX
#include <sys/types.h>
#include <strings.h>
+#ifdef LINUX
+#include <dlfcn.h>
+#endif
#include <stdarg.h>
// For vsnprintf()
#define NSP_vsnprintf vsnprintf
@@ -119,6 +122,113 @@ restoreUTF8(char *pPath)
return 0;
}
+#ifdef LINUX
+extern int nspluginOOoModuleHook (void** aResult);
+int nspluginOOoModuleHook (void** aResult)
+{
+ void *dl_handle;
+
+ dl_handle = dlopen(NULL, RTLD_NOW);
+ if (!dl_handle)
+ {
+ fprintf (stderr, "Can't open myself '%s'\n", dlerror());
+ return 1;
+ }
+
+ Dl_info dl_info = { 0,0,0,0 };
+ if(!dladdr((void *)nspluginOOoModuleHook, &dl_info))
+ {
+ fprintf (stderr, "Can't find my own address '%s'\n", dlerror());
+ return 1;
+ }
+
+ if (!dl_info.dli_fname)
+ {
+ fprintf (stderr, "Can't find my own file name\n");
+ return 1;
+ }
+
+ char cwdstr[NPP_PATH_MAX];
+ if (!getcwd (cwdstr, sizeof(cwdstr)))
+ {
+ fprintf (stderr, "Can't get cwd\n");
+ return 1;
+ }
+
+ char libFileName[NPP_PATH_MAX];
+
+ if (dl_info.dli_fname[0] != '/')
+ {
+ if ((strlen(cwdstr) + 1 + strlen(dl_info.dli_fname)) >= NPP_PATH_MAX)
+ {
+ fprintf (stderr, "Plugin path too long\n");
+ return 1;
+ }
+ strcpy (libFileName, cwdstr);
+ strcat (libFileName, "/");
+ strcat (libFileName, dl_info.dli_fname);
+ }
+ else
+ {
+ if (strlen(dl_info.dli_fname) >= NPP_PATH_MAX)
+ {
+ fprintf (stderr, "Plugin path too long\n");
+ return 1;
+ }
+ strcpy (libFileName, dl_info.dli_fname);
+ }
+
+ char *clobber;
+ static char realFileName[NPP_PATH_MAX] = {0};
+# define SEARCH_SUFFIX "/program/libnpsoplug"
+
+ if (!(clobber = strstr (libFileName, SEARCH_SUFFIX)))
+ {
+ ssize_t len = readlink(libFileName, realFileName, NPP_PATH_MAX-1);
+ if (len == -1)
+ {
+ fprintf (stderr, "Couldn't read link '%s'\n", libFileName);
+ return 1;
+ }
+ realFileName[len] = '\0';
+ if (!(clobber = strstr (realFileName, SEARCH_SUFFIX)))
+ {
+ fprintf (stderr, "Couldn't find suffix in '%s'\n", realFileName);
+ return 1;
+ }
+ *clobber = '\0';
+ }
+ else
+ {
+ *clobber = '\0';
+ strcpy (realFileName, libFileName);
+ }
+
+ fprintf (stderr, "OpenOffice path before fixup is '%s'\n", realFileName);
+
+ if (realFileName[0] != '/') {
+ /* a relative sym-link and we need to get an absolute path */
+ char scratch[NPP_PATH_MAX] = {0};
+ if (strlen (realFileName) + strlen (libFileName) + 2 >= NPP_PATH_MAX - 1)
+ {
+ fprintf (stderr, "Paths too long to fix up.\n");
+ return 1;
+ }
+ strcpy (scratch, libFileName);
+ if (strrchr (scratch, '/')) /* remove the last element */
+ *(strrchr (scratch, '/') + 1) = '\0';
+ strcat (scratch, realFileName);
+ strcpy (realFileName, scratch);
+ }
+
+ *aResult = realFileName;
+
+ fprintf (stderr, "OpenOffice path is '%s'\n", realFileName);
+
+ return 0;
+}
+#endif
+
// *aResult points the static string holding "/opt/staroffice8"
int findReadSversion(void** aResult, int /*bWnt*/, const char* /*tag*/, const char* /*entry*/)
{
@@ -131,9 +241,29 @@ int findReadSversion(void** aResult, int /*bWnt*/, const char* /*tag*/, const ch
// Filename of lnk file, eg. "soffice"
char lnkFileName[NPP_PATH_MAX] = {0};
char* pTempZero = NULL;
+
+#ifdef LINUX
+ /* try to fetch a 'self' pointer */
+ if (!nspluginOOoModuleHook (aResult))
+ return 0;
+
+ /* .. now in $HOME */
+#endif
sprintf(lnkFileName, "%s/.mozilla/plugins/libnpsoplugin%s", getenv("HOME"), SAL_DLLEXTENSION);
+#ifdef LINUX
+ ssize_t len = readlink(lnkFileName, realFileName, NPP_PATH_MAX-1);
+ if (-1 == len)
+ {
+ *realFileName = 0;
+ return -1;
+ }
+ realFileName[len] = '\0';
+
+ if (NULL == (pTempZero = strstr(realFileName, "/program/libnpsoplugin" SAL_DLLEXTENSION)))
+#else
if ((0 > readlink(lnkFileName, realFileName, NPP_PATH_MAX)) ||
- (NULL == (pTempZero = strstr(realFileName, "/program/libnpsoplugin" SAL_DLLEXTENSION))))
+ (NULL == (pTempZero = strstr(realFileName, "/program/libnpsoplugin" SAL_DLLEXTENSION))))
+#endif
{
*realFileName = 0;
return -1;
diff --git a/extensions/source/nsplugin/source/so_main.cxx b/extensions/source/nsplugin/source/so_main.cxx
index 7932f63d6d4d..c60da777689a 100644
--- a/extensions/source/nsplugin/source/so_main.cxx
+++ b/extensions/source/nsplugin/source/so_main.cxx
@@ -126,7 +126,7 @@ int find_free_node()
return -1;
}
-int find_cur_node(sal_Int32 cur_id)
+int find_cur_node(long cur_id)
{
for(int i=0; i<MAX_NODE_NUM; i++)
{
diff --git a/extensions/source/ole/oleobjw.cxx b/extensions/source/ole/oleobjw.cxx
index 79baf3c7d8df..ea9377ccf596 100644
--- a/extensions/source/ole/oleobjw.cxx
+++ b/extensions/source/ole/oleobjw.cxx
@@ -422,6 +422,46 @@ Any SAL_CALL IUnknownWrapper_Impl::getValue( const OUString& aPropertyName )
{
o2u_attachCurrentThread();
ITypeInfo * pInfo = getTypeInfo();
+ // I was going to implement an XServiceInfo interface to allow the type
+ // of the automation object to be exposed.. but it seems
+ // from looking at comments in the code that it is possible for
+ // this object to actually wrap an UNO object ( I guess if automation is
+ // used from MSO to create Openoffice objects ) Therefore, those objects
+ // will more than likely already have their own XServiceInfo interface.
+ // Instead here I chose a name that should be illegal both in COM and
+ // UNO ( from an IDL point of view ) therefore I think this is a safe
+ // hack
+ if ( aPropertyName.equals( rtl::OUString::createFromAscii("$GetTypeName") ))
+ {
+ if ( pInfo && m_sTypeName.getLength() == 0 )
+ {
+ m_sTypeName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("IDispatch") );
+ CComBSTR sName;
+
+ if ( SUCCEEDED( pInfo->GetDocumentation( -1, &sName, NULL, NULL, NULL ) ) )
+ {
+ rtl::OUString sTmp( reinterpret_cast<const sal_Unicode*>(LPCOLESTR(sName)));
+ if ( sTmp.indexOf('_') == 0 )
+ sTmp = sTmp.copy(1);
+ // do we own the memory for pTypeLib, msdn doco is vague
+ // I'll assume we do
+ CComPtr< ITypeLib > pTypeLib;
+ unsigned int index;
+ if ( SUCCEEDED( pInfo->GetContainingTypeLib( &pTypeLib.p, &index )) )
+ {
+ if ( SUCCEEDED( pTypeLib->GetDocumentation( -1, &sName, NULL, NULL, NULL ) ) )
+ {
+ rtl::OUString sLibName( reinterpret_cast<const sal_Unicode*>(LPCOLESTR(sName)));
+ m_sTypeName = sLibName.concat( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".") ) ).concat( sTmp );
+
+ }
+ }
+ }
+
+ }
+ ret <<= m_sTypeName;
+ return ret;
+ }
FuncDesc aDescGet(pInfo);
FuncDesc aDescPut(pInfo);
VarDesc aVarDesc(pInfo);
diff --git a/extensions/source/ole/oleobjw.hxx b/extensions/source/ole/oleobjw.hxx
index 6d46452eb088..230de2b7dcf8 100644
--- a/extensions/source/ole/oleobjw.hxx
+++ b/extensions/source/ole/oleobjw.hxx
@@ -234,6 +234,7 @@ protected:
Sequence<Type> m_seqTypes;
CComPtr<IUnknown> m_spUnknown;
CComPtr<IDispatch> m_spDispatch;
+ rtl::OUString m_sTypeName; // is "" ( not initialised ), "IDispatch" ( we have no idea ) or "SomeLibrary.SomeTypeName" if we managed to get a type
/** This value is set dureing XInitialization::initialize. It indicates that the COM interface
was transported as VT_DISPATCH in a VARIANT rather then a VT_UNKNOWN
*/
diff --git a/extras/source/autotext/lang/ga-IE/acor_ga-IE.dat b/extras/source/autotext/lang/ga-IE/acor_ga-IE.dat
new file mode 100644
index 000000000000..66dbf9d18c5d
--- /dev/null
+++ b/extras/source/autotext/lang/ga-IE/acor_ga-IE.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sh-ME/acor_sh-ME.dat b/extras/source/autotext/lang/sh-ME/acor_sh-ME.dat
new file mode 100644
index 000000000000..1f6e4057e6e1
--- /dev/null
+++ b/extras/source/autotext/lang/sh-ME/acor_sh-ME.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sh-RS/acor_sh-RS.dat b/extras/source/autotext/lang/sh-RS/acor_sh-RS.dat
new file mode 100644
index 000000000000..1f6e4057e6e1
--- /dev/null
+++ b/extras/source/autotext/lang/sh-RS/acor_sh-RS.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sh-YU/acor_sh-YU.dat b/extras/source/autotext/lang/sh-YU/acor_sh-YU.dat
new file mode 100644
index 000000000000..1f6e4057e6e1
--- /dev/null
+++ b/extras/source/autotext/lang/sh-YU/acor_sh-YU.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sk/acor_sk-SK.dat b/extras/source/autotext/lang/sk/acor_sk-SK.dat
index 3f62238c9ef5..8502fc624ec2 100644
--- a/extras/source/autotext/lang/sk/acor_sk-SK.dat
+++ b/extras/source/autotext/lang/sk/acor_sk-SK.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sr-ME/acor_sr-ME.dat b/extras/source/autotext/lang/sr-ME/acor_sr-ME.dat
new file mode 100644
index 000000000000..d512182b4735
--- /dev/null
+++ b/extras/source/autotext/lang/sr-ME/acor_sr-ME.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sr-RS/acor_sr-RS.dat b/extras/source/autotext/lang/sr-RS/acor_sr-RS.dat
new file mode 100644
index 000000000000..d512182b4735
--- /dev/null
+++ b/extras/source/autotext/lang/sr-RS/acor_sr-RS.dat
Binary files differ
diff --git a/extras/source/autotext/lang/sr-YU/acor_sr-YU.dat b/extras/source/autotext/lang/sr-YU/acor_sr-YU.dat
new file mode 100644
index 000000000000..d512182b4735
--- /dev/null
+++ b/extras/source/autotext/lang/sr-YU/acor_sr-YU.dat
Binary files differ
diff --git a/extras/source/palettes/lang/eu/modern_eu.sog b/extras/source/palettes/lang/eu/modern_eu.sog
index 820de672b421..e5516c05009e 100755
--- a/extras/source/palettes/lang/eu/modern_eu.sog
+++ b/extras/source/palettes/lang/eu/modern_eu.sog
@@ -1,31 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:gradient-table xmlns:office="http://openoffice.org/2000/office" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script">
- <draw:draw:name="1 gradientea" draw:style="linear" draw:start-color="#00ff00" draw:end-color="#00ffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="600" draw:border="0%"/>
- <draw:draw:name="2 gradientea" draw:style="linear" draw:start-color="#00ffff" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="600" draw:border="0%"/>
- <draw:draw:name="3 gradientea" draw:style="linear" draw:start-color="#00ffff" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="2250" draw:border="0%"/>
- <draw:draw:name="4 gradientea" draw:style="square" draw:cx="40%" draw:cy="50%" draw:start-color="#000080" draw:end-color="#e6e6ff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="3290" draw:border="0%"/>
- <draw:draw:name="5 gradientea" draw:style="radial" draw:cx="40%" draw:cy="50%" draw:start-color="#00ffff" draw:end-color="#4700b8" draw:start-intensity="85%" draw:end-intensity="100%" draw:border="0%"/>
- <draw:draw:name="6 gradientea" draw:style="radial" draw:cx="70%" draw:cy="65%" draw:start-color="#000080" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="0%"/>
- <draw:draw:name="7 gradientea" draw:style="square" draw:cx="70%" draw:cy="80%" draw:start-color="#280099" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
- <draw:draw:name="8 gradientea" draw:style="rectangular" draw:cx="50%" draw:cy="50%" draw:start-color="#94006b" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
- <draw:draw:name="9 gradientea" draw:style="square" draw:cx="50%" draw:cy="50%" draw:start-color="#94006b" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
- <draw:draw:name="10 gradientea" draw:style="radial" draw:cx="60%" draw:cy="50%" draw:start-color="#000000" draw:end-color="#ff6633" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="0%"/>
- <draw:draw:name="11 gradientea" draw:style="square" draw:cx="75%" draw:cy="70%" draw:start-color="#6b6b94" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="70%"/>
- <draw:draw:name="12 gradientea" draw:style="square" draw:cx="75%" draw:cy="70%" draw:start-color="#fa1e42" draw:end-color="#663300" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
- <draw:draw:name="13 gradientea" draw:style="radial" draw:cx="20%" draw:cy="20%" draw:start-color="#800080" draw:end-color="#000080" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="40%"/>
- <draw:draw:name="14 gradientea" draw:style="ellipsoid" draw:cx="50%" draw:cy="50%" draw:start-color="#004a4a" draw:end-color="#23dcdc" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="20%"/>
- <draw:draw:name="15 gradientea" draw:style="ellipsoid" draw:cx="50%" draw:cy="50%" draw:start-color="#000000" draw:end-color="#0000ff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
- <draw:draw:name="16 gradientea" draw:style="radial" draw:cx="40%" draw:cy="80%" draw:start-color="#000000" draw:end-color="#ff0000" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="15%"/>
- <draw:draw:name="17 gradientea" draw:style="radial" draw:cx="75%" draw:cy="80%" draw:start-color="#ffff00" draw:end-color="#ff0000" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="0%"/>
- <draw:draw:name="18 gradientea" draw:style="square" draw:cx="50%" draw:cy="50%" draw:start-color="#b84700" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1490" draw:border="15%"/>
- <draw:draw:name="19 gradientea" draw:style="square" draw:cx="60%" draw:cy="70%" draw:start-color="#b84700" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1490" draw:border="40%"/>
- <draw:draw:name="20 gradientea" draw:style="radial" draw:cx="40%" draw:cy="80%" draw:start-color="#b84700" draw:end-color="#ffff00" draw:start-intensity="55%" draw:end-intensity="100%" draw:border="40%"/>
- <draw:draw:name="21 gradientea" draw:style="rectangular" draw:cx="20%" draw:cy="60%" draw:start-color="#e12e2e" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="90%" draw:angle="1490" draw:border="40%"/>
- <draw:draw:name="22 gradientea" draw:style="axial" draw:start-color="#c0c0c0" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="90%" draw:angle="1490" draw:border="40%"/>
- <draw:draw:name="23 gradientea" draw:style="square" draw:cx="20%" draw:cy="60%" draw:start-color="#333333" draw:end-color="#fa1e42" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="2090" draw:border="40%"/>
- <draw:draw:name="24 gradientea" draw:style="square" draw:cx="20%" draw:cy="70%" draw:start-color="#0000ff" draw:end-color="#5e11a6" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="2090" draw:border="40%"/>
- <draw:draw:name="25 gradientea" draw:style="rectangular" draw:cx="70%" draw:cy="60%" draw:start-color="#0000ff" draw:end-color="#5e11a6" draw:start-intensity="100%" draw:end-intensity="80%" draw:angle="750" draw:border="40%"/>
- <draw:draw:name="26 gradientea" draw:style="rectangular" draw:cx="50%" draw:cy="30%" draw:start-color="#c0c0c0" draw:end-color="#333333" draw:start-intensity="100%" draw:end-intensity="60%" draw:angle="900" draw:border="40%"/>
- <draw:draw:name="27 gradientea" draw:style="square" draw:cx="50%" draw:cy="50%" draw:start-color="#ffffff" draw:end-color="#333333" draw:start-intensity="100%" draw:end-intensity="60%" draw:angle="0" draw:border="0%"/>
+ <draw:gradient draw:name="1 gradientea" draw:style="linear" draw:start-color="#00ff00" draw:end-color="#00ffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="600" draw:border="0%"/>
+ <draw:gradient draw:name="2 gradientea" draw:style="linear" draw:start-color="#00ffff" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="600" draw:border="0%"/>
+ <draw:gradient draw:name="3 gradientea" draw:style="linear" draw:start-color="#00ffff" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="2250" draw:border="0%"/>
+ <draw:gradient draw:name="4 gradientea" draw:style="square" draw:cx="40%" draw:cy="50%" draw:start-color="#000080" draw:end-color="#e6e6ff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="3290" draw:border="0%"/>
+ <draw:gradient draw:name="5 gradientea" draw:style="radial" draw:cx="40%" draw:cy="50%" draw:start-color="#00ffff" draw:end-color="#4700b8" draw:start-intensity="85%" draw:end-intensity="100%" draw:border="0%"/>
+ <draw:gradient draw:name="6 gradientea" draw:style="radial" draw:cx="70%" draw:cy="65%" draw:start-color="#000080" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="0%"/>
+ <draw:gradient draw:name="7 gradientea" draw:style="square" draw:cx="70%" draw:cy="80%" draw:start-color="#280099" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
+ <draw:gradient draw:name="8 gradientea" draw:style="rectangular" draw:cx="50%" draw:cy="50%" draw:start-color="#94006b" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
+ <draw:gradient draw:name="9 gradientea" draw:style="square" draw:cx="50%" draw:cy="50%" draw:start-color="#94006b" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
+ <draw:gradient draw:name="10 gradientea" draw:style="radial" draw:cx="60%" draw:cy="50%" draw:start-color="#000000" draw:end-color="#ff6633" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="0%"/>
+ <draw:gradient draw:name="11 gradientea" draw:style="square" draw:cx="75%" draw:cy="70%" draw:start-color="#6b6b94" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="70%"/>
+ <draw:gradient draw:name="12 gradientea" draw:style="square" draw:cx="75%" draw:cy="70%" draw:start-color="#fa1e42" draw:end-color="#663300" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
+ <draw:gradient draw:name="13 gradientea" draw:style="radial" draw:cx="20%" draw:cy="20%" draw:start-color="#800080" draw:end-color="#000080" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="40%"/>
+ <draw:gradient draw:name="14 gradientea" draw:style="ellipsoid" draw:cx="50%" draw:cy="50%" draw:start-color="#004a4a" draw:end-color="#23dcdc" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="20%"/>
+ <draw:gradient draw:name="15 gradientea" draw:style="ellipsoid" draw:cx="50%" draw:cy="50%" draw:start-color="#000000" draw:end-color="#0000ff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1640" draw:border="0%"/>
+ <draw:gradient draw:name="16 gradientea" draw:style="radial" draw:cx="40%" draw:cy="80%" draw:start-color="#000000" draw:end-color="#ff0000" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="15%"/>
+ <draw:gradient draw:name="17 gradientea" draw:style="radial" draw:cx="75%" draw:cy="80%" draw:start-color="#ffff00" draw:end-color="#ff0000" draw:start-intensity="100%" draw:end-intensity="100%" draw:border="0%"/>
+ <draw:gradient draw:name="18 gradientea" draw:style="square" draw:cx="50%" draw:cy="50%" draw:start-color="#b84700" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1490" draw:border="15%"/>
+ <draw:gradient draw:name="19 gradientea" draw:style="square" draw:cx="60%" draw:cy="70%" draw:start-color="#b84700" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="1490" draw:border="40%"/>
+ <draw:gradient draw:name="20 gradientea" draw:style="radial" draw:cx="40%" draw:cy="80%" draw:start-color="#b84700" draw:end-color="#ffff00" draw:start-intensity="55%" draw:end-intensity="100%" draw:border="40%"/>
+ <draw:gradient draw:name="21 gradientea" draw:style="rectangular" draw:cx="20%" draw:cy="60%" draw:start-color="#e12e2e" draw:end-color="#ffff00" draw:start-intensity="100%" draw:end-intensity="90%" draw:angle="1490" draw:border="40%"/>
+ <draw:gradient draw:name="22 gradientea" draw:style="axial" draw:start-color="#c0c0c0" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="90%" draw:angle="1490" draw:border="40%"/>
+ <draw:gradient draw:name="23 gradientea" draw:style="square" draw:cx="20%" draw:cy="60%" draw:start-color="#333333" draw:end-color="#fa1e42" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="2090" draw:border="40%"/>
+ <draw:gradient draw:name="24 gradientea" draw:style="square" draw:cx="20%" draw:cy="70%" draw:start-color="#0000ff" draw:end-color="#5e11a6" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="2090" draw:border="40%"/>
+ <draw:gradient draw:name="25 gradientea" draw:style="rectangular" draw:cx="70%" draw:cy="60%" draw:start-color="#0000ff" draw:end-color="#5e11a6" draw:start-intensity="100%" draw:end-intensity="80%" draw:angle="750" draw:border="40%"/>
+ <draw:gradient draw:name="26 gradientea" draw:style="rectangular" draw:cx="50%" draw:cy="30%" draw:start-color="#c0c0c0" draw:end-color="#333333" draw:start-intensity="100%" draw:end-intensity="60%" draw:angle="900" draw:border="40%"/>
+ <draw:gradient draw:name="27 gradientea" draw:style="square" draw:cx="50%" draw:cy="50%" draw:start-color="#ffffff" draw:end-color="#333333" draw:start-intensity="100%" draw:end-intensity="60%" draw:angle="0" draw:border="0%"/>
</office:gradient-table> \ No newline at end of file
diff --git a/fetch_tarballs.sh b/fetch_tarballs.sh
index 87c2c80e4be3..e08b553f8171 100755
--- a/fetch_tarballs.sh
+++ b/fetch_tarballs.sh
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -65,25 +61,31 @@ for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/w
fi
done
-for i in curl /usr/bin/curl /usr/local/bin/curl /usr/sfw/bin/curl /opt/sfw/bin/curl /opt/local/bin/curl; do
-# mac curl returns "2" on --version
-# eval "$i --version" > /dev/null 2>&1
-# ret=$?
-# if [ $ret -eq 0 ]; then
- if [ -x $i ]; then
- curl=$i
- echo found curl: $curl
- break 2
- fi
-done
+if [ -z "$wget" ]; then
+ for i in curl /usr/bin/curl /usr/local/bin/curl /usr/sfw/bin/curl /opt/sfw/bin/curl /opt/local/bin/curl; do
+ # mac curl returns "2" on --version
+ # eval "$i --version" > /dev/null 2>&1
+ # ret=$?
+ # if [ $ret -eq 0 ]; then
+ if [ -x $i ]; then
+ curl=$i
+ echo found curl: $curl
+ break 2
+ fi
+ done
+fi
if [ -z "$wget" -a -z "$curl" ]; then
echo "ERROR: neither wget nor curl found!"
exit
fi
-for i in md5sum /usr/local/bin/md5sum gmd5sum /usr/sfw/bin/md5sum /opt/sfw/bin/gmd5sum /opt/local/bin/md5sum; do
- eval "$i --version" > /dev/null 2>&1
+for i in md5 md5sum /usr/local/bin/md5sum gmd5sum /usr/sfw/bin/md5sum /opt/sfw/bin/gmd5sum /opt/local/bin/md5sum; do
+ if [ "$i" = "md5" ]; then
+ eval "$i -x" > /dev/null 2>&1
+ else
+ eval "$i --version" > /dev/null 2>&1
+ fi
ret=$?
if [ $ret -eq 0 ]; then
md5sum=$i
@@ -92,44 +94,61 @@ for i in md5sum /usr/local/bin/md5sum gmd5sum /usr/sfw/bin/md5sum /opt/sfw/bin/g
fi
done
+if [ "$md5sum" = "md5" ]; then
+ md5special=-r
+fi
+
if [ -z "$md5sum" ]; then
echo "Warning: no md5sum: found!"
fi
start_dir=`pwd`
+logfile=$TARFILE_LOCATION/fetch.log
+date >> $logfile
+
filelist=`cat $1`
-cd $TARFILE_LOCATION
+mkdir -p $TARFILE_LOCATION/tmp
+cd $TARFILE_LOCATION/tmp
+echo $$ > fetch-running
for i in $filelist ; do
-# echo $i
+# echo $i
if [ "$i" != `echo $i | sed "s/^http:\///"` ]; then
tarurl=$i
# TODO: check for comment
else
if [ "$tarurl" != "" ]; then
- if [ ! -f "$i" ]; then
+ if [ ! -f "../$i" ]; then
+ echo $i
if [ ! -z "$wget" ]; then
- $wget -nv -N $tarurl/$i
+ $wget -nv -N $tarurl/$i 2>&1 | tee -a $logfile
else
echo fetching $i
- $curl $file_date_check -O $tarurl/$i
+ $curl $file_date_check -O $tarurl/$i 2>&1 | tee -a $logfile
fi
wret=$?
if [ $wret -ne 0 ]; then
+ mv $i ${i}_broken
failed="$failed $i"
wret=0
fi
if [ -f $i -a -n "$md5sum" ]; then
- sum=`$md5sum $i | sed "s/ [ *].*//"`
+ sum=`$md5sum $md5special $i | sed "s/ .*//"`
sum2=`echo $i | sed "s/-.*//"`
if [ "$sum" != "$sum2" ]; then
- echo checksum failure for $i
+ echo checksum failure for $i 2>&1 | tee -a $logfile
failed="$failed $i"
+ mv $i ${i}_broken
+ else
+ mv $i ..
fi
+ else
+ mv $i ..
fi
fi
fi
fi
done
+rm $TARFILE_LOCATION/tmp/*-*
cd $start_dir
if [ ! -z "$failed" ]; then
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx
index 68c449dd7353..bb125bd37a47 100644
--- a/filter/source/pdf/impdialog.cxx
+++ b/filter/source/pdf/impdialog.cxx
@@ -86,6 +86,8 @@ ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
mbExportNotesPages( sal_False ),
mbUseTransitionEffects( sal_False ),
mbIsSkipEmptyPages( sal_True ),
+ mbAddStream( sal_False ),
+ mbEmbedStandardFonts( sal_False ),
mnFormsType( 0 ),
mbExportFormFields( sal_True ),
mbAllowDuplicateFieldNames( sal_False ),
@@ -195,6 +197,7 @@ ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
mbUseTransitionEffects = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "UseTransitionEffects" ) ), sal_True );
mbIsSkipEmptyPages = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsSkipEmptyPages" ) ), sal_False );
mbAddStream = maConfigItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "IsAddStream" ) ), sal_False );
+ mbEmbedStandardFonts = maConfigItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "EmbedStandardFonts" ) ), sal_False );
mnFormsType = maConfigItem.ReadInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "FormsType" ) ), 0 );
mbExportFormFields = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportFormFields" ) ), sal_True );
@@ -332,6 +335,7 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "UseTransitionEffects" ) ), mbUseTransitionEffects );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsSkipEmptyPages" ) ), mbIsSkipEmptyPages );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "IsAddStream" ) ), mbAddStream );
+ maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "EmbedStandardFonts" ) ), mbEmbedStandardFonts );
/*
* FIXME: the entries are only implicitly defined by the resource file. Should there
@@ -435,6 +439,7 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage( Window* pParent,
maCbExportFormFields( this, PDFFilterResId( CB_EXPORTFORMFIELDS ) ),
mbExportFormFieldsUserSelection( sal_False ),
+ mbEmbedStandardFontsUserSelection( sal_False ),
maFtFormsFormat( this, PDFFilterResId( FT_FORMSFORMAT ) ),
maLbFormsFormat( this, PDFFilterResId( LB_FORMSFORMAT ) ),
maCbAllowDuplicateFieldNames( this, PDFFilterResId( CB_ALLOWDUPLICATEFIELDNAMES ) ),
@@ -444,6 +449,7 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage( Window* pParent,
maCbExportNotesPages( this, PDFFilterResId( CB_EXPORTNOTESPAGES ) ),
maCbExportEmptyPages( this, PDFFilterResId( CB_EXPORTEMPTYPAGES ) ),
maCbAddStream( this, PDFFilterResId( CB_ADDSTREAM ) ),
+ maCbEmbedStandardFonts( this, PDFFilterResId( CB_EMBEDSTANDARDFONTS ) ),
mbIsPresentation( sal_False ),
mbIsWriter( sal_False),
mpaParent( 0 )
@@ -461,7 +467,11 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage( Window* pParent,
Point aNewPos = maCbAddStream.GetPosPixel();
aNewPos.Y() -= nDelta;
maCbAddStream.SetPosPixel( aNewPos );
+ aNewPos = maCbEmbedStandardFonts.GetPosPixel();
+ aNewPos.Y() -= nDelta;
+ maCbEmbedStandardFonts.SetPosPixel( aNewPos );
}
+ maCbExportEmptyPages.SetStyle( maCbExportEmptyPages.GetStyle() | WB_VCENTER );
}
// -----------------------------------------------------------------------------
@@ -524,11 +534,13 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent
// get the form values, for use with PDF/A-1 selection interface
mbTaggedPDFUserSelection = paParent->mbUseTaggedPDF;
mbExportFormFieldsUserSelection = paParent->mbExportFormFields;
+ mbEmbedStandardFontsUserSelection = paParent->mbEmbedStandardFonts;
if( !maCbPDFA1b.IsChecked() )
{// the value for PDF/A set by the ToggleExportPDFAHdl method called before
maCbTaggedPDF.Check( mbTaggedPDFUserSelection );
maCbExportFormFields.Check( mbExportFormFieldsUserSelection );
+ maCbEmbedStandardFonts.Check( mbEmbedStandardFontsUserSelection );
}
maLbFormsFormat.SelectEntryPos( (sal_uInt16)paParent->mnFormsType );
@@ -554,6 +566,8 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent
maCbExportEmptyPages.SetPosPixel( Point( aPos.X(), aPos.Y() - nCheckBoxHeight ) );
aPos = maCbAddStream.GetPosPixel();
maCbAddStream.SetPosPixel( Point( aPos.X(), aPos.Y() - nCheckBoxHeight ) );
+ aPos = maCbEmbedStandardFonts.GetPosPixel();
+ maCbEmbedStandardFonts.SetPosPixel( Point( aPos.X(), aPos.Y() - nCheckBoxHeight ) );
maCbExportNotesPages.Show( FALSE );
maCbExportNotesPages.Check( FALSE );
}
@@ -614,11 +628,13 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* paParent )
paParent->mnPDFTypeSelection = 1;
paParent->mbUseTaggedPDF = mbTaggedPDFUserSelection;
paParent->mbExportFormFields = mbExportFormFieldsUserSelection;
+ paParent->mbEmbedStandardFonts = mbEmbedStandardFontsUserSelection;
}
else
{
paParent->mbUseTaggedPDF = maCbTaggedPDF.IsChecked();
paParent->mbExportFormFields = maCbExportFormFields.IsChecked();
+ paParent->mbEmbedStandardFonts = maCbEmbedStandardFonts.IsChecked();
}
/*
@@ -711,6 +727,9 @@ IMPL_LINK( ImpPDFTabGeneralPage, ToggleExportPDFAHdl, void*, EMPTYARG )
mbExportFormFieldsUserSelection = maCbExportFormFields.IsChecked();
maCbExportFormFields.Check( sal_False );
maCbExportFormFields.Enable( sal_False );
+ mbEmbedStandardFontsUserSelection = maCbEmbedStandardFonts.IsChecked();
+ maCbEmbedStandardFonts.Check( sal_True );
+ maCbEmbedStandardFonts.Enable( sal_False );
}
else
{
@@ -719,6 +738,8 @@ IMPL_LINK( ImpPDFTabGeneralPage, ToggleExportPDFAHdl, void*, EMPTYARG )
maCbTaggedPDF.Check( mbTaggedPDFUserSelection );
maCbExportFormFields.Check( mbExportFormFieldsUserSelection );
maCbExportFormFields.Enable();
+ maCbEmbedStandardFonts.Check( mbEmbedStandardFontsUserSelection );
+ maCbEmbedStandardFonts.Enable();
}
// PDF/A-1 doesn't allow launch action, so enable/disable the selection on
// Link page
diff --git a/filter/source/pdf/impdialog.hrc b/filter/source/pdf/impdialog.hrc
index 6a010120e3bd..cc438255650f 100644
--- a/filter/source/pdf/impdialog.hrc
+++ b/filter/source/pdf/impdialog.hrc
@@ -83,9 +83,9 @@
#define CB_ALLOWDUPLICATEFIELDNAMES 23
#define CB_EXPORTEMPTYPAGES 24
#define CB_ADDSTREAM 25
-
#define CB_PDFA_1B_SELECT 26
#define CB_EXPORTNOTESPAGES 27
+#define CB_EMBEDSTANDARDFONTS 28
#define FL_OLD_PAGES 51
#define RB_OLD_ALL 52
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
index 050aeee4caf5..38da273c2fbd 100644
--- a/filter/source/pdf/impdialog.hxx
+++ b/filter/source/pdf/impdialog.hxx
@@ -103,6 +103,7 @@ protected:
sal_Bool mbUseTransitionEffects;
sal_Bool mbIsSkipEmptyPages;
sal_Bool mbAddStream;
+ sal_Bool mbEmbedStandardFonts;
sal_Int32 mnFormsType;
sal_Bool mbExportFormFields;
sal_Bool mbAllowDuplicateFieldNames;
@@ -193,6 +194,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage
CheckBox maCbExportFormFields;
sal_Bool mbExportFormFieldsUserSelection;
+ sal_Bool mbEmbedStandardFontsUserSelection;
FixedText maFtFormsFormat;
ListBox maLbFormsFormat;
CheckBox maCbAllowDuplicateFieldNames;
@@ -203,6 +205,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage
CheckBox maCbExportEmptyPages;
CheckBox maCbAddStream;
+ CheckBox maCbEmbedStandardFonts;
sal_Bool mbIsPresentation;
sal_Bool mbIsWriter;
diff --git a/filter/source/pdf/impdialog.src b/filter/source/pdf/impdialog.src
index 34f788495674..76e64e87c173 100644
--- a/filter/source/pdf/impdialog.src
+++ b/filter/source/pdf/impdialog.src
@@ -27,7 +27,7 @@
#include "impdialog.hrc"
-#define TAB_PDF_SIZE Size = MAP_APPFONT ( 176, 255 )
+#define TAB_PDF_SIZE Size = MAP_APPFONT ( 176, 268 )
//string for TabDialog standard buttons
String STR_PDF_EXPORT
{
@@ -229,11 +229,18 @@ TabPage RID_PDF_TAB_GENER
WordBreak = TRUE ;
Text[ en-US ] = "Exp~ort automatically inserted blank pages";
};
- CheckBox CB_ADDSTREAM
+ CheckBox CB_EMBEDSTANDARDFONTS
{
Pos = MAP_APPFONT ( 12 , 248 ) ;
Size = MAP_APPFONT ( 158 , 10 ) ;
TabStop = TRUE ;
+ Text[ en-US ] = "E~mbed standard fonts";
+ };
+ CheckBox CB_ADDSTREAM
+ {
+ Pos = MAP_APPFONT ( 12 , 261 ) ;
+ Size = MAP_APPFONT ( 158 , 10 ) ;
+ TabStop = TRUE ;
Text[ en-US ] = "Create ~hybrid file";
};
};
diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index 793503abf9ba..c868a3ec3157 100644
--- a/filter/source/pdf/pdfexport.cxx
+++ b/filter/source/pdf/pdfexport.cxx
@@ -430,8 +430,8 @@ sal_Bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue
rFilterData[ nData ].Value >>= mbExportNotes;
else if ( rFilterData[ nData ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ) )
rFilterData[ nData ].Value >>= mbExportNotesPages;
-// else if ( rFilterData[ nData ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "EmbedStandardFonts" ) ) )
-// rFilterData[ nData ].Value >>= mbEmbedStandardFonts;
+ else if ( rFilterData[ nData ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "EmbedStandardFonts" ) ) )
+ rFilterData[ nData ].Value >>= mbEmbedStandardFonts;
else if ( rFilterData[ nData ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "UseTransitionEffects" ) ) )
rFilterData[ nData ].Value >>= mbUseTransitionEffects;
else if ( rFilterData[ nData ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportFormFields" ) ) )
diff --git a/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl b/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
index 6cfeb35eb50e..b2abefad2d9d 100644
--- a/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
+++ b/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
@@ -2,23 +2,23 @@
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
+
Copyright 2000, 2010 Oracle and/or its affiliates.
-
+
OpenOffice.org - a multi-platform office productivity suite
-
+
This file is part of OpenOffice.org.
-
+
OpenOffice.org is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License version 3
only, as published by the Free Software Foundation.
-
+
OpenOffice.org 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 version 3 for more details
(a copy is included in the LICENSE file that accompanied this code).
-
+
You should have received a copy of the GNU Lesser General Public License
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
@@ -34,177 +34,177 @@
<!--+++++ INCLUDED XSL MODULES +++++-->
<!-- helper collection, to convert measures (e.g. inch to pixel using DPI (dots per inch) parameter)-->
- <xsl:import href="../../common/measure_conversion.xsl"/>
+ <xsl:import href="../../common/measure_conversion.xsl"/>
<!-- common office body element handling -->
- <xsl:import href="../common/body.xsl"/>
+ <xsl:import href="../common/body.xsl"/>
<!-- common table handling -->
- <xsl:import href="../common/table/table.xsl"/>
+ <xsl:import href="../common/table/table.xsl"/>
<!-- xhtml table handling -->
- <xsl:include href="table.xsl"/>
+ <xsl:include href="table.xsl"/>
<!-- Useful in case of 'style:map', conditional formatting, where a style references to another -->
- <xsl:key name="styles" match="/*/office:styles/style:style | /*/office:automatic-styles/style:style" use="@style:name"/>
+ <xsl:key name="styles" match="/*/office:styles/style:style | /*/office:automatic-styles/style:style" use="@style:name"/>
<!-- ************ -->
<!-- *** body *** -->
<!-- ************ -->
- <xsl:key match="style:style/@style:master-page-name" name="masterPage" use="'count'"/>
- <xsl:key match="style:master-page" name="masterPageElements" use="@style:name"/>
- <xsl:key match="style:page-layout" name="pageLayoutElements" use="@style:name"/>
- <xsl:key name="writingModeStyles" match="/*/office:styles/style:style/style:paragraph-properties/@style:writing-mode | /*/office:automatic-styles/style:style/style:paragraph-properties/@style:writing-mode" use="'test'"/>
- <xsl:template name="create-body">
- <xsl:param name="globalData"/>
+ <xsl:key match="style:style/@style:master-page-name" name="masterPage" use="'count'"/>
+ <xsl:key match="style:master-page" name="masterPageElements" use="@style:name"/>
+ <xsl:key match="style:page-layout" name="pageLayoutElements" use="@style:name"/>
+ <xsl:key name="writingModeStyles" match="/*/office:styles/style:style/style:paragraph-properties/@style:writing-mode | /*/office:automatic-styles/style:style/style:paragraph-properties/@style:writing-mode" use="'test'"/>
+ <xsl:template name="create-body">
+ <xsl:param name="globalData"/>
<!-- approximation to find the correct master page style (with page dimensions) -->
- <xsl:variable name="masterPageNames">
+ <xsl:variable name="masterPageNames">
<!-- Loop over every style:style containing a @style:master-page-name attribute -->
- <xsl:for-each select="key('masterPage','count')">
- <!-- Check if this style is being used in the body -->
- <xsl:if test="key('elementUsingStyle', ../@style:name)">
- <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
- <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
- <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
-
+ <xsl:for-each select="key('masterPage','count')">
+ <!-- Check if this style is being used in the body -->
+ <xsl:if test="key('elementUsingStyle', ../@style:name)">
+ <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
+ <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
+ <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
<!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
- <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
- <xsl:variable name="pageProperties">
- <xsl:choose>
- <xsl:when test="not($pageLayoutName) or $pageLayoutName = ''">
- <xsl:copy-of select="$globalData/styles-file/*/office:automatic-styles/style:page-layout[1]/style:page-layout-properties"/>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
+ <xsl:variable name="pageProperties">
+ <xsl:choose>
+ <xsl:when test="not($pageLayoutName) or $pageLayoutName = ''">
+ <xsl:copy-of select="$globalData/styles-file/*/office:automatic-styles/style:page-layout[1]/style:page-layout-properties"/>
+ </xsl:when>
+ <xsl:otherwise>
<!-- Find the according style:page-layout and store the properties in a variable -->
- <xsl:copy-of select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:element name="body">
+ <xsl:copy-of select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="body">
<!-- direction of text flow -->
- <xsl:variable name="writingMode" select="$pageProperties/style:page-layout-properties/@style:writing-mode"/>
- <xsl:choose>
- <xsl:when test="$writingMode">
- <xsl:choose>
- <xsl:when test="contains($writingMode, 'lr')">
- <xsl:attribute name="dir">ltr</xsl:attribute>
- </xsl:when>
- <xsl:when test="contains($writingMode, 'rl')">
- <xsl:attribute name="dir">rtl</xsl:attribute>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <!-- As CSS writing-mode is not implemented by all browsers, a heuristic is done -->
- <xsl:variable name="writingMode" select="key('writingModeStyles', 'test')"/>
- <xsl:if test="contains($writingMode, 'rl')">
- <xsl:attribute name="dir">rtl</xsl:attribute>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:variable name="writingMode" select="$pageProperties/style:page-layout-properties/@style:writing-mode"/>
+ <xsl:choose>
+ <xsl:when test="$writingMode">
+ <xsl:choose>
+ <xsl:when test="contains($writingMode, 'lr')">
+ <xsl:attribute name="dir">ltr</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="contains($writingMode, 'rl')">
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- As CSS writing-mode is not implemented by all browsers, a heuristic is done -->
+ <xsl:variable name="writingMode" select="key('writingModeStyles', 'test')"/>
+ <xsl:if test="contains($writingMode, 'rl')">
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
<!-- adapt page size -->
- <xsl:variable name="pageWidth" select="$pageProperties/style:page-layout-properties/@fo:page-width"/>
+ <xsl:variable name="pageWidth" select="$pageProperties/style:page-layout-properties/@fo:page-width"/>
<!-- multiple backgroundimages for different page styles (never used in html) -->
- <xsl:variable name="backgroundImage" select="$pageProperties/style:page-layout-properties/style:background-image"/>
+ <xsl:variable name="backgroundImage" select="$pageProperties/style:page-layout-properties/style:background-image"/>
<!-- page margins & background image -->
- <xsl:if test="$pageWidth or $pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
- <xsl:attribute name="style">
- <xsl:if test="$pageWidth">
- <xsl:text>max-width:</xsl:text>
- <xsl:value-of select="$pageWidth"/>
- <xsl:text>;</xsl:text>
- </xsl:if>
- <xsl:if test="$pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
- <xsl:apply-templates select="$pageProperties/style:page-layout-properties/@fo:*"/>
- <xsl:if test="$backgroundImage/@xlink:href">
- <xsl:text>background-image:url(</xsl:text>
- <xsl:call-template name="create-href">
- <xsl:with-param name="href" select="$backgroundImage/@xlink:href"/>
- </xsl:call-template>
- <xsl:text>);</xsl:text>
-
- <xsl:if test="$backgroundImage/@style:repeat">
- <xsl:choose>
- <xsl:when test="$backgroundImage/@style:repeat = 'no-repeat'">
- <xsl:text>background-repeat:no-repeat;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>background-repeat:repeat;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:if test="$backgroundImage/@style:position">
- <xsl:text>background-position:</xsl:text>
- <xsl:value-of select="$backgroundImage/@style:position"/>
- <xsl:text>;</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
- <!-- processing the content of the OpenDocument content file -->
- <xsl:apply-templates select="/*/office:body/*">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- </xsl:element>
- </xsl:template>
-
- <!-- processing the content of the OpenDocument content file -->
- <xsl:template match="office:body/*">
- <xsl:param name="globalData"/>
+ <xsl:if test="$pageWidth or $pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
+ <xsl:attribute name="style">
+ <xsl:if test="$pageWidth">
+ <xsl:text>max-width:</xsl:text>
+ <xsl:value-of select="$pageWidth"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ <xsl:if test="$pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
+ <xsl:apply-templates select="$pageProperties/style:page-layout-properties/@fo:*"/>
+ <xsl:if test="$backgroundImage/@xlink:href">
+ <xsl:text>background-image:url(</xsl:text>
+ <xsl:call-template name="create-href">
+ <xsl:with-param name="href" select="$backgroundImage/@xlink:href"/>
+ </xsl:call-template>
+ <xsl:text>);</xsl:text>
+
+ <xsl:if test="$backgroundImage/@style:repeat">
+ <xsl:choose>
+ <xsl:when test="$backgroundImage/@style:repeat = 'no-repeat'">
+ <xsl:text>background-repeat:no-repeat;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>background-repeat:repeat;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="$backgroundImage/@style:position">
+ <xsl:text>background-position:</xsl:text>
+ <xsl:value-of select="$backgroundImage/@style:position"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <!-- processing the content of the OpenDocument content file -->
+ <xsl:apply-templates select="/*/office:body/*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ </xsl:element>
+ </xsl:template>
+
+ <!-- processing the content of the OpenDocument content file -->
+ <xsl:template match="office:body/*">
+ <xsl:param name="globalData"/>
<!-- not using of 'apply-styles-and-content' as the content table information migth have been added to 'globalData' variable -->
- <xsl:apply-templates select="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name -->
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
+ <xsl:apply-templates select="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name -->
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
<!-- writing the footer- and endnotes beyond the body -->
- <xsl:call-template name="write-text-nodes">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:template>
+ <xsl:call-template name="write-text-nodes">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:template>
<!-- ******************************* -->
<!-- *** User Field Declarations *** -->
<!-- ******************************* -->
- <xsl:template match="text:user-field-get | text:user-field-input">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:user-field-get | text:user-field-input">
+ <xsl:param name="globalData"/>
- <xsl:value-of select="."/>
- </xsl:template>
+ <xsl:value-of select="."/>
+ </xsl:template>
- <xsl:template match="text:conditional-text">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:conditional-text">
+ <xsl:param name="globalData"/>
- <xsl:value-of select="."/>
- </xsl:template>
+ <xsl:value-of select="."/>
+ </xsl:template>
<!-- ODF text fields -->
- <xsl:template match="text:author-initials | text:author-name | text:chapter | text:character-count | text:creation-date | text:creation-time | text:creator | text:date | text:description | text:editing-cycles | text:editing-duration | text:file-name | text:image-count | text:initial-creator | text:keywords | text:modification-date | text:modification-time | text:object-count | text:page-continuation | text:page-count | text:page-number | text:paragraph-count | text:print-date | text:print-time | text:printed-by | text:sender-city | text:sender-company | text:sender-country | text:sender-email | text:sender-fax | text:sender-firstname | text:sender-initials | text:sender-lastname | text:sender-phone-private | text:sender-phone-work | text:sender-position | text:sender-postal-code | text:sender-state-or-province | text:sender-street | text:sender-title | text:sheet-name | text:subject | text:table-count | text:time | text:title | text:user-defined | text:word-count">
- <xsl:param name="globalData"/>
-
- <xsl:element name="span">
- <xsl:attribute name="title">
- <xsl:value-of select="local-name()"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
+ <xsl:template match="text:author-initials | text:author-name | text:chapter | text:character-count | text:creation-date | text:creation-time | text:creator | text:date | text:description | text:editing-cycles | text:editing-duration | text:file-name | text:image-count | text:initial-creator | text:keywords | text:modification-date | text:modification-time | text:object-count | text:page-continuation | text:page-count | text:page-number | text:paragraph-count | text:print-date | text:print-time | text:printed-by | text:sender-city | text:sender-company | text:sender-country | text:sender-email | text:sender-fax | text:sender-firstname | text:sender-initials | text:sender-lastname | text:sender-phone-private | text:sender-phone-work | text:sender-position | text:sender-postal-code | text:sender-state-or-province | text:sender-street | text:sender-title | text:sheet-name | text:subject | text:table-count | text:time | text:title | text:user-defined | text:word-count">
+ <xsl:param name="globalData"/>
+
+ <xsl:element name="span">
+ <xsl:attribute name="title">
+ <xsl:value-of select="local-name()"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
@@ -212,83 +212,83 @@
<!-- *** Textbox *** -->
<!-- *************** -->
- <xsl:template match="draw:text-box">
- <xsl:param name="globalData"/>
-
- <xsl:comment>Next 'div' was a 'draw:text-box'.</xsl:comment>
- <xsl:element name="div">
- <xsl:variable name="dimension">
- <xsl:apply-templates select="@fo:min-width"/>
- <xsl:apply-templates select="@fo:max-width"/>
- <xsl:apply-templates select="@fo:min-height"/>
- <xsl:apply-templates select="@fo:max-height"/>
- </xsl:variable>
- <xsl:if test="$dimension">
- <xsl:attribute name="style">
- <xsl:value-of select="$dimension"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:apply-templates select="@draw:name">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <xsl:apply-templates select="node()">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="@fo:min-width">
- <xsl:text>min-width:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="@fo:max-width">
- <xsl:text>max-width:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="@fo:min-height">
- <xsl:text>min-height:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="@fo:max-height">
- <xsl:text>max-height:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
+ <xsl:template match="draw:text-box">
+ <xsl:param name="globalData"/>
+
+ <xsl:comment>Next 'div' was a 'draw:text-box'.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:variable name="dimension">
+ <xsl:apply-templates select="@fo:min-width"/>
+ <xsl:apply-templates select="@fo:max-width"/>
+ <xsl:apply-templates select="@fo:min-height"/>
+ <xsl:apply-templates select="@fo:max-height"/>
+ </xsl:variable>
+ <xsl:if test="$dimension">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$dimension"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="@draw:name">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="node()">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="@fo:min-width">
+ <xsl:text>min-width:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="@fo:max-width">
+ <xsl:text>max-width:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="@fo:min-height">
+ <xsl:text>min-height:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="@fo:max-height">
+ <xsl:text>max-height:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
<!-- inline style helper for the 'div' boxes -->
- <xsl:template name="svg:height">
- <xsl:text>height:</xsl:text>
- <xsl:choose>
+ <xsl:template name="svg:height">
+ <xsl:text>height:</xsl:text>
+ <xsl:choose>
<!-- changing the distance measure: inch to in -->
- <xsl:when test="contains(@svg:height, 'inch')">
- <xsl:value-of select="substring-before(@svg:height, 'ch')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@svg:height"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
+ <xsl:when test="contains(@svg:height, 'inch')">
+ <xsl:value-of select="substring-before(@svg:height, 'ch')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@svg:height"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
<!-- inline style helper for the 'div' boxes -->
- <xsl:template name="svg:width">
- <xsl:text>width:</xsl:text>
- <xsl:choose>
+ <xsl:template name="svg:width">
+ <xsl:text>width:</xsl:text>
+ <xsl:choose>
<!-- changing the distance measure: inch to in -->
- <xsl:when test="contains(@svg:width, 'inch')">
- <xsl:value-of select="substring-before(@svg:width, 'ch')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@svg:width"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
+ <xsl:when test="contains(@svg:width, 'inch')">
+ <xsl:value-of select="substring-before(@svg:width, 'ch')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@svg:width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
@@ -296,146 +296,165 @@
<!-- *** Paragraphs *** -->
<!-- ****************** -->
- <xsl:template match="text:p | draw:page">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:p | draw:page">
+ <xsl:param name="globalData"/>
<!-- The footnote symbol is the prefix for a footnote in the footer -->
- <xsl:param name="footnotePrefix"/>
- <!-- 1) In ODF sometimes the followig children are nested
- <text:p>
- <draw:frame>
- <draw:text-box>
- <text:p>
- Which results in a paragraphs (the last text:p) having a paragraph as its anchestor.
- In HTML a 'p' can only have inline documents (no other 'p' as children'),
+ <xsl:param name="footnotePrefix"/>
+ <!-- 1) In ODF sometimes the followig children are nested
+ <text:p>
+ <draw:frame>
+ <draw:text-box>
+ <text:p>
+ Which results in a paragraphs (the last text:p) having a paragraph as its anchestor.
+ In HTML a 'p' can only have inline documents (no other 'p' as children'),
a 'div' will be given for the ancestors instead.
2) ODF images are embedded in a paragraph, but CSS is not able to express a horizontal alignment for an HTML image (text:align is only valid for block elements).
A surrounding 'div' element taking over the image style solves that problem, but the div is invalid as child of a paragraph
- Therefore the paragraph has to be exchanged with a HTML div element
+ Therefore the paragraph has to be exchanged with a HTML div element
-->
- <!-- 2DO page alignment fix - PART1 -->
- <xsl:choose>
- <xsl:when test="draw:frame and ((normalize-space(text()) != '') or (count(*) &gt; 1 and (not(text:soft-page-break) and count(*) = 2)))">
- <!-- Create a div, if there is a 'draw:frame' child with either text (not being whitespace alone) and more than the draw:frame alone and
- not the draw:frame and a soft-page-break alone (which is quite often) -->
-
+ <!-- 2DO page alignment fix - PART1 -->
+ <xsl:variable name="childText"><xsl:apply-templates mode="getAllTextChildren"/></xsl:variable>
+ <xsl:choose>
+ <xsl:when test="name() = 'text:p' and not(*) and (normalize-space($childText) = '')">
+ <!-- WorkAround: Test if the empty paragraph was added after an image, which OOO often does -->
+ <xsl:variable name="isFollowingImage">
+ <xsl:call-template name="follows-empty-paragraphs-and-image">
+ <xsl:with-param name="precedingElement" select="preceding-sibling::node()[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$isFollowingImage = 'no'">
+ <xsl:call-template name="create-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:if>
+
+ </xsl:when>
+ <xsl:when test="draw:frame and ((normalize-space($childText) != '') or (((count(*) - count(text:soft-page-break)) &gt; 1)))">
+ <!-- If there is a 'draw:frame' child with text (not being whitespace alone) and more than the draw:frame alone and
+ not the draw:frame and a soft-page-break alone (which is quite often) -->
+
<!-- If there is a frame within the text:p or draw:page, its siblings are surrounded as well by a div and are floating (CSS float) -->
- <!-- But it makes no sense to create floating if the frame is alone or only together with a soft-page-break not usable for HTML -->
- <!-- The paragraph is written as DIV as there might be nested paragraphs (see above choose block) -->
- <xsl:choose>
- <xsl:when test="name() = 'text:p'">
- <xsl:comment>Next 'div' was a 'text:p'.</xsl:comment>
- </xsl:when>
- <xsl:otherwise>
- <xsl:comment>Next 'div' was a 'draw:page'.</xsl:comment>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:element name="div">
- <xsl:apply-templates select="@*">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
+ <!-- But it makes no sense to create floating if the frame is alone or only together with a soft-page-break not usable for HTML -->
+ <!-- The paragraph is written as DIV as there might be nested paragraphs (see above choose block) -->
+ <xsl:choose>
+ <xsl:when test="name() = 'text:p'">
+ <xsl:comment>Next 'div' was a 'text:p'.</xsl:comment>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>Next 'div' was a 'draw:page'.</xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:element name="div">
+ <xsl:apply-templates select="@*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
<!-- the footnote symbol is the prefix for a footnote in the footer -->
- <xsl:copy-of select="$footnotePrefix"/>
-
+ <xsl:copy-of select="$footnotePrefix"/>
<!-- start floating of frame (and siblings) -->
- <xsl:apply-templates select="node()[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="previousFrameWidths" select="0"/>
- <xsl:with-param name="previousFrameHeights" select="0"/>
- <!-- 2DO for me (Svante) - Not used, uncertain 4now..
- <xsl:with-param name="pageMarginLeft">
- <xsl:call-template name="getPageMarginLeft"/>
- </xsl:with-param>-->
- </xsl:apply-templates>
- </xsl:element>
- <!-- after the last draw:frame sibling the CSS float is disabled
- &#160; is an unbreakable whitespace to give conent to the element and force a browser not to ignore the element -->
- <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
- </xsl:when>
- <xsl:when test="text:tab">
+ <xsl:apply-templates select="node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="previousFrameWidths" select="0"/>
+ <xsl:with-param name="previousFrameHeights" select="0"/>
+ <!-- 2DO for me (Svante) - Not used, uncertain 4now..
+ <xsl:with-param name="pageMarginLeft">
+ <xsl:call-template name="getPageMarginLeft"/>
+ </xsl:with-param>-->
+ </xsl:apply-templates>
+ </xsl:element>
+ <!-- after the last draw:frame sibling the CSS float is disabled
+ &#160; is an unbreakable whitespace to give conent to the element and force a browser not to ignore the element -->
+ <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
+ </xsl:when>
+ <xsl:when test="text:tab">
<!-- If there is a tabulator (ie. text:tab) within a paragraph, a heuristic for ODF tabulators creates a
span for every text:tab embracing the following text nodes aligning them according to the tabulator.
A line break or another text:tab starts a new text:span, line break even the tab counter for the line.
-->
- <xsl:element name="p">
- <xsl:apply-templates select="@*">
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:apply-templates>
+ <xsl:element name="p">
+ <xsl:apply-templates select="@*">
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:apply-templates>
<!-- start with first child of the paragraph -->
- <xsl:variable name="firstChildNode" select="node()[1]" />
- <xsl:apply-templates select="$firstChildNode" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="tabStops" select="$globalData/all-doc-styles/style[@style:name = current()/@text:style-name]/*/style:tab-stops"/>
- <xsl:with-param name="parentMarginLeft">
+ <xsl:variable name="firstChildNode" select="node()[1]" />
+ <xsl:apply-templates select="$firstChildNode" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="tabStops" select="$globalData/all-doc-styles/style[@style:name = current()/@text:style-name]/*/style:tab-stops"/>
+ <xsl:with-param name="parentMarginLeft">
<!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
- <xsl:variable name="paragraphName" select="@text:style-name" />
- <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
+ <xsl:variable name="paragraphName" select="@text:style-name" />
+ <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
<!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
<!-- 2DO: left-margin in order with bidirectional -->
- <xsl:choose>
- <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="pageMarginLeft">
- <xsl:call-template name="getPageMarginLeft"/>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
+ <xsl:choose>
+ <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="pageMarginLeft">
+ <xsl:call-template name="getPageMarginLeft"/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
<!-- !!Check if paragraph is empty!!
OOo writes out empty paragraphs layouted behind an image (= draw:image within draw:frame)
those have to be neglected in HTML -->
- <xsl:when test="name() = 'text:p' and not(text()) and not(*)">
- <xsl:variable name="isFollowingImage">
- <xsl:call-template name="follows-empty-paragraphs-and-image">
- <xsl:with-param name="precedingElement" select="preceding-sibling::node()[1]"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="$isFollowingImage = 'yes'">
- <xsl:call-template name="create-paragraph">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="create-paragraph">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:when test="name() = 'text:p' and not($childText) and not(*)">
+ <xsl:variable name="isFollowingImage">
+ <xsl:call-template name="follows-empty-paragraphs-and-image">
+ <xsl:with-param name="precedingElement" select="preceding-sibling::node()[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$isFollowingImage = 'no'">
+ <xsl:call-template name="create-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="create-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <!-- Return the text -->
+ <xsl:template match="text()" mode="getAllTextChildren">
+ <xsl:value-of select="."/>
+ </xsl:template>
<!-- A span will be created for every text:tab embracing the following text nodes.
A line break or another text:tab starts a new text:span -->
- <xsl:template match="* | text()" mode="tabHandling">
- <xsl:param name="globalData"/>
- <xsl:param name="tabStops"/>
+ <xsl:template match="* | text()" mode="tabHandling">
+ <xsl:param name="globalData"/>
+ <xsl:param name="tabStops"/>
<!-- there can be multiple tabs in one line, tabNo guesses the one to apply. By default the first i.e. "1" -->
- <xsl:param name="tabCount" select="0"/>
- <xsl:param name="parentMarginLeft" />
- <xsl:param name="pageMarginLeft" />
-
+ <xsl:param name="tabCount" select="0"/>
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="pageMarginLeft" />
+
<!-- 2DO: EXCHANGE FOLLOING SIBLING BY VARIABLE -->
- <xsl:variable name="followingSiblingNode" select="following-sibling::node()[1]"/>
+ <xsl:variable name="followingSiblingNode" select="following-sibling::node()[1]"/>
+
+
+ <!--
+ Every tabulator indents its following content, encapuslated in a span
+ element.
-
- <!--
- Every tabulator indents its following content, encapuslated in a span
- element.
-
This template have two modes:
-
+
1) Before the first tabulator it will match as usually paragraph content
to HTML.
2) After the first paragraph it will always triggers two recursions.
@@ -444,604 +463,621 @@
The other calls this template and will now ignore anything else than
TAB and LINE-BREAK.
-
+
The tabulators and linebreaks are being iterated, one by one to keep track of the tab number
-->
- <xsl:choose>
- <xsl:when test="name() = 'text:tab'">
+ <xsl:choose>
+ <xsl:when test="name() = 'text:tab'">
<!-- every frame sibling have to be incapuslated within a div with left indent -->
- <xsl:element name="span">
- <xsl:choose>
- <xsl:when test="count($tabStops/style:tab-stop) &lt; 3">
+ <xsl:element name="span">
+ <xsl:choose>
+ <xsl:when test="count($tabStops/style:tab-stop) &lt; 3">
<!-- only allow the heuristic when the style has less than 3 TABS -->
- <xsl:attribute name="style">
- <xsl:call-template name="createTabIndent">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="$tabCount + 1"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:attribute name="style">
+ <xsl:call-template name="createTabIndent">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="$tabCount + 1"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
<!-- if there are more than 3 TABS in the style, create a none-breakable-space as whitespace -->
- <xsl:text>&#160;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="$tabCount + 1"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="name() = 'text:line-break'">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="$tabCount + 1"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="name() = 'text:line-break'">
<!-- A line-break resets the tabCount to '0' -->
- <br/>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="0"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
+ <br/>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="0"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
<!-- only before the first tab all content is written out -->
- <xsl:if test="$tabCount = 0">
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:if>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="$tabCount"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!--
- This recursion creates the content of a tab (i.e. following siblings
+ <xsl:if test="$tabCount = 0">
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="$tabCount"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!--
+ This recursion creates the content of a tab (i.e. following siblings
till next TAB or LINE BREAK) and ends with the next
- TAB, LINE-BREAK or with the end of the paragraph.
+ TAB, LINE-BREAK or with the end of the paragraph.
-->
- <xsl:template match="* | text()" mode="tabContentHandling">
- <xsl:param name="globalData"/>
+ <xsl:template match="* | text()" mode="tabContentHandling">
+ <xsl:param name="globalData"/>
- <xsl:if test="(name() != 'text:tab') and (name() != 'text:line-break')">
+ <xsl:if test="(name() != 'text:tab') and (name() != 'text:line-break')">
<!-- Write out content -->
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
<!-- Apply for the next node -->
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="createTabIndent">
- <xsl:param name="globalData"/>
- <xsl:param name="tabStops"/>
- <xsl:param name="tabCount"/>
- <xsl:param name="parentMarginLeft" />
- <xsl:param name="pageMarginLeft" />
-
- <xsl:text>position:absolute;left:</xsl:text>
- <xsl:variable name="tabPosition">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$tabStops/style:tab-stop[$tabCount]/@style:position"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="tabIndent">
- <xsl:choose>
- <xsl:when test="$tabStops/style:tab-stop[$tabCount]/@style:type = 'center'">
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="createTabIndent">
+ <xsl:param name="globalData"/>
+ <xsl:param name="tabStops"/>
+ <xsl:param name="tabCount"/>
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="pageMarginLeft" />
+
+ <xsl:text>position:absolute;left:</xsl:text>
+ <xsl:variable name="tabPosition">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$tabStops/style:tab-stop[$tabCount]/@style:position"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="tabIndent">
+ <xsl:choose>
+ <xsl:when test="$tabStops/style:tab-stop[$tabCount]/@style:type = 'center'">
<!-- in case of style:type 'center' the text is even before the tab stop,
centered around the beginning. As I see currently no way in mapping this,
therefore I do some HEURISTIC (minus -2.5cm) -->
- <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft - 2.5"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$tabIndent='NaN'">
- <xsl:variable name="tabPosition">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$tabStops/style:tab-stop[last()]/@style:position"/>
- </xsl:call-template>
- </xsl:variable>
+ <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft - 2.5"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$tabIndent='NaN'">
+ <xsl:variable name="tabPosition">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$tabStops/style:tab-stop[last()]/@style:position"/>
+ </xsl:call-template>
+ </xsl:variable>
<!-- Heuristic: for every tab that is more than specified give a further 1 cm -->
- <xsl:value-of select="$parentMarginLeft + $tabPosition + count($tabStops/style:tab-stop) - $tabCount"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabIndent"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>cm;</xsl:text>
- <xsl:apply-templates select="$tabStops/style:tab-stop[$tabCount]/@style:type"/>
- </xsl:template>
-
+ <xsl:value-of select="$parentMarginLeft + $tabPosition + count($tabStops/style:tab-stop) - $tabCount"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabIndent"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>cm;</xsl:text>
+ <xsl:apply-templates select="$tabStops/style:tab-stop[$tabCount]/@style:type"/>
+ </xsl:template>
+
<!-- OOo writes out empty paragraphs layouted behind an image,
those have to be neglected in HTML
This method checks if an empty paragraph is of that kind! -->
- <xsl:template name="follows-empty-paragraphs-and-image">
- <xsl:param name="precedingElement" />
- <xsl:param name="elementToCheck" select="1"/>
-
- <xsl:choose>
+ <xsl:template name="follows-empty-paragraphs-and-image">
+ <xsl:param name="precedingElement" />
+ <xsl:param name="elementToCheck" select="1"/>
+ <xsl:choose>
<!-- OOo writes out empty paragraphs layouted behind the image,
- those have to be neglected in HTML -->
- <xsl:when test="name($precedingElement) = 'text:p' and not($precedingElement/text()) and not($precedingElement/*)">
- <xsl:call-template name="follows-empty-paragraphs-and-image">
- <xsl:with-param name="precedingElement" select="preceding-sibling::*[$elementToCheck]"/>
- <xsl:with-param name="elementToCheck" select="$elementToCheck +1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$precedingElement/draw:frame">no</xsl:when>
- <xsl:otherwise>yes</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="create-paragraph">
- <xsl:param name="globalData"/>
+ those have to be neglected in HTML
+ <xsl:when test="name() = 'text:p' and (normalize-space($childText) = '')"> -->
+ <!-- WorkAround: Test if the empty paragraph was added after an image, which OOO often does -->
+ <xsl:when test="(name($precedingElement) = 'text:p' and not($precedingElement/text()) and not($precedingElement/*))">
+ <xsl:call-template name="follows-empty-paragraphs-and-image">
+ <xsl:with-param name="precedingElement" select="preceding-sibling::*[$elementToCheck]"/>
+ <xsl:with-param name="elementToCheck" select="$elementToCheck +1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$precedingElement/draw:frame">yes</xsl:when>
+ <xsl:otherwise>no</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="create-paragraph">
+ <xsl:param name="globalData"/>
<!-- the footnote symbol is the prefix for a footnote in the footer -->
- <xsl:param name="footnotePrefix"/>
-
- <!-- xhtml:p may only contain inline elements.
- If there is one frame beyond, div must be used! -->
- <xsl:variable name="elementName">
- <xsl:choose>
- <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
- <xsl:otherwise>p</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:element name="{$elementName}">
- <xsl:choose>
+ <xsl:param name="footnotePrefix"/>
+
+ <!-- xhtml:p may only contain inline elements.
+ If there is one frame beyond, div must be used! -->
+ <xsl:variable name="elementName">
+ <xsl:choose>
+ <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
+ <xsl:otherwise>p</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$elementName}">
+ <xsl:choose>
<!-- in ODF borders of paragraphs will be merged by default. Merging means the adjactend paragraphs are building a unit,
where only the first and the last will have have a border to the surrounding (top / bottom border)
<xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
<xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
-->
- <xsl:when test="$globalData/all-styles/style[@style:name = current()/@text:style-name]/@mergedBorders">
- <xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
- <xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
- <xsl:choose>
- <xsl:when test="$precedingParagraphStyle or $followingParagraphStyle">
- <xsl:variable name="isPrecedingBorderParagraph" select="$globalData/all-styles/style[@style:name = $precedingParagraphStyle]/@mergedBorders"/>
- <xsl:variable name="isFollowingBorderParagraph" select="$globalData/all-styles/style[@style:name = $followingParagraphStyle]/@mergedBorders"/>
- <xsl:choose>
- <xsl:when test="not($isPrecedingBorderParagraph) and $isFollowingBorderParagraph">
- <xsl:attribute name="class">
- <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderStart')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="$isPrecedingBorderParagraph and not($isFollowingBorderParagraph)">
- <xsl:attribute name="class">
- <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderEnd')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="class">
- <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="write-paragraph">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="write-paragraph">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="write-paragraph">
- <xsl:param name="globalData"/>
+ <xsl:when test="$globalData/all-styles/style[@style:name = current()/@text:style-name]/@mergedBorders">
+ <xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
+ <xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
+ <xsl:choose>
+ <xsl:when test="$precedingParagraphStyle or $followingParagraphStyle">
+ <xsl:variable name="isPrecedingBorderParagraph" select="$globalData/all-styles/style[@style:name = $precedingParagraphStyle]/@mergedBorders"/>
+ <xsl:variable name="isFollowingBorderParagraph" select="$globalData/all-styles/style[@style:name = $followingParagraphStyle]/@mergedBorders"/>
+ <xsl:choose>
+ <xsl:when test="not($isPrecedingBorderParagraph) and $isFollowingBorderParagraph">
+ <xsl:attribute name="class">
+ <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderStart')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$isPrecedingBorderParagraph and not($isFollowingBorderParagraph)">
+ <xsl:attribute name="class">
+ <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderEnd')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="write-paragraph">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="write-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="write-paragraph">
+ <xsl:param name="globalData"/>
<!-- the footnote symbol is the prefix for a footnote in the footer -->
- <xsl:param name="footnotePrefix" />
+ <xsl:param name="footnotePrefix" />
<!-- empty paragraph tags does not provoke an carridge return,
therefore an non breakable space (&nbsp) have been inserted.-->
- <xsl:choose>
- <xsl:when test="node()">
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- <xsl:text>&#160;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="style:tab-stop/@style:type">
- <xsl:text>text-align:</xsl:text>
- <xsl:choose>
- <xsl:when test=". = 'left'">left</xsl:when>
- <xsl:when test=". = 'right'">right</xsl:when>
- <xsl:when test=". = 'center'">center</xsl:when>
- <xsl:otherwise>justify</xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
-
- <!-- As soon a frame is within a paragraph (text:p) or page:frame, every element floating (CSS) and worked out in sequence.
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="style:tab-stop/@style:type">
+ <xsl:text>text-align:</xsl:text>
+ <xsl:choose>
+ <xsl:when test=". = 'left'">left</xsl:when>
+ <xsl:when test=". = 'right'">right</xsl:when>
+ <xsl:when test=". = 'center'">center</xsl:when>
+ <xsl:otherwise>justify</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+
+ <!-- As soon a frame is within a paragraph (text:p) or page:frame, every child element is floating (CSS) and worked out in sequence.
Accumulating prior frame width and adding parent's left margin -->
-
- <!-- Matching all elements and text beyond a paragraph/text:page which are sibling of a draw:frame -->
- <xsl:template match="* | text()" mode="frameFloating">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" select="0"/>
- <xsl:param name="previousFrameHeights" select="0" />
+ <!-- Matching all elements and text beyond a paragraph/text:page which are sibling of a draw:frame -->
+ <xsl:template match="* | text()" mode="frameFloating">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
<!-- it becomes true for siblings after a draw:frame -->
- <xsl:param name="createDiv" select="false()"/>
- <xsl:param name="noDivBefore" select="true()"/>
- <xsl:param name="leftPosition" />
- <xsl:param name="parentMarginLeft" />
- <xsl:param name="frameAlignedToParagraphWithSvgY" />
-
- <xsl:choose>
- <xsl:when test="name() = 'draw:frame'">
- <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
-
- <!-- if the first node is a draw:frame create a div -->
- <xsl:call-template name="createDrawFrame">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- </xsl:call-template>
- <!-- next elements will be called after the creation with the new indent (plus width of frame) -->
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="nextSiblingIsFrame" select="name(following-sibling::node()[1]) = 'draw:frame'"/>
- <xsl:choose>
- <xsl:when test="$createDiv and normalize-space(.) != ''">
+ <xsl:param name="createDiv" select="false()"/>
+ <xsl:param name="noDivBefore" select="true()"/>
+ <xsl:param name="leftPosition" />
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="frameAlignedToParagraphWithSvgY" />
+
+ <xsl:choose>
+ <xsl:when test="name() = 'draw:frame'">
+ <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
+
+ <!-- if the first node is a draw:frame create a div -->
+ <xsl:call-template name="createDrawFrame">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ </xsl:call-template>
+ <!-- next elements will be called after the creation with the new indent (plus width of frame) -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="nextSiblingIsFrame" select="name(following-sibling::node()[1]) = 'draw:frame'"/>
+ <xsl:choose>
+ <xsl:when test="$createDiv and normalize-space(.) != ''">
<!-- every following frame sibling till the next draw:frame
- have to be incapuslated within a div with left indent.
- To be moved alltogether arcording the indent (usually right) -->
- <xsl:comment>Next 'div' added for floating.</xsl:comment>
- <xsl:element name="div">
- <xsl:attribute name="style">
- <xsl:text>position:relative; left:</xsl:text>
- <xsl:value-of select="$leftPosition"/>
- <xsl:text>cm;</xsl:text>
- </xsl:attribute>
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
+ have to be incapuslated within a div with left indent.
+ To be moved alltogether arcording the indent (usually right) -->
+ <xsl:comment>Next 'div' added for floating.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:attribute name="style">
+ <xsl:text>position:relative; left:</xsl:text>
+ <xsl:value-of select="$leftPosition"/>
+ <xsl:text>cm;</xsl:text>
+ </xsl:attribute>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
<!-- if it is a frame sibling it will be NOT incapuslated within the div (as already within one) -->
- <xsl:if test="not($nextSiblingIsFrame)">
- <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="false()"/>
- <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:element>
- <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
-
- <!-- Other draw:frame will be created outside of the div element -->
- <xsl:apply-templates select="following-sibling::draw:frame[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="not($createDiv)">
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- <xsl:if test="not($nextSiblingIsFrame) or $noDivBefore">
- <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
- <xsl:choose>
- <xsl:when test="normalize-space($followingSibling) != ''">
- <xsl:apply-templates select="$followingSibling" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="false()"/>
- <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:if test="not($nextSiblingIsFrame)">
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="false()"/>
+ <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:element>
+ <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
+
+ <!-- Other draw:frame will be created outside of the div element -->
+ <xsl:apply-templates select="following-sibling::draw:frame[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="not($createDiv)">
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ <xsl:if test="not($nextSiblingIsFrame) or $noDivBefore">
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="false()"/>
+ <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- A XML node other than text or element (e.g. commment) should not stop the recursion -->
+ <xsl:template match="comment()" mode="frameFloating">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
+ <!-- it becomes true for siblings after a draw:frame -->
+ <xsl:param name="createDiv" select="false()"/>
+ <xsl:param name="noDivBefore" select="true()"/>
+ <xsl:param name="leftPosition" />
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="frameAlignedToParagraphWithSvgY" />
+
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="$createDiv"/>
+ <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
<!-- As draw:fame may occure within more elements than in text:p and draw:page -->
- <xsl:template match="draw:frame">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" select="0"/>
- <xsl:param name="previousFrameHeights" select="0" />
-
- <xsl:call-template name="createDrawFrame">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- </xsl:call-template>
- <!-- after the last draw:frame sibling the CSS float is disabled -->
- <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
- </xsl:template>
-
- <xsl:template name="getPageMarginLeft">
+ <xsl:template match="draw:frame">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
+
+ <xsl:call-template name="createDrawFrame">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ </xsl:call-template>
+ <!-- after the last draw:frame sibling the CSS float is disabled -->
+ <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
+ </xsl:template>
+
+ <xsl:template name="getPageMarginLeft">
<!-- approximation to find the correct master page style (with page dimensions) -->
- <xsl:variable name="masterPageNames">
+ <xsl:variable name="masterPageNames">
<!-- Loop over every style:style containing a @style:master-page-name attribute -->
- <xsl:for-each select="key('masterPage','count')">
+ <xsl:for-each select="key('masterPage','count')">
<!-- Check if this style is being used in the body -->
- <xsl:if test="key('elementUsingStyle', ../@style:name)">
+ <xsl:if test="key('elementUsingStyle', ../@style:name)">
<!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
- <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
- <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
+ <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
+ <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
<!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
- <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
+ <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
<!-- Find the according style:page-layout and store the properties in a variable -->
- <xsl:variable name="pageMarginLeftAttr" select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties/@fo:margin-left"/>
- <xsl:choose>
- <xsl:when test="$pageMarginLeftAttr">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$pageMarginLeftAttr"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:variable name="pageMarginLeftAttr" select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties/@fo:margin-left"/>
+ <xsl:choose>
+ <xsl:when test="$pageMarginLeftAttr">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$pageMarginLeftAttr"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
<!-- Elements and text aside of a draw:frame are floating, here a div is being created.
- Either for a draw:frame or for text and other elements floating aside -->
- <xsl:template name="createDrawFrame">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" select="0"/>
- <xsl:param name="previousFrameHeights" select="0" />
- <xsl:param name="parentMarginLeft"/>
-
- <xsl:variable name="parentMarginLeftNew">
- <xsl:choose>
- <xsl:when test="string-length(normalize-space($parentMarginLeft)) &lt; 1">
+ Either for a draw:frame or for text and other elements floating aside -->
+ <xsl:template name="createDrawFrame">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
+ <xsl:param name="parentMarginLeft"/>
+
+ <xsl:variable name="parentMarginLeftNew">
+ <xsl:choose>
+ <xsl:when test="string-length(normalize-space($parentMarginLeft)) &lt; 1">
<!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
- <xsl:variable name="paragraphName" select="parent::*/@text:style-name" />
- <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
+ <xsl:variable name="paragraphName" select="parent::*/@text:style-name" />
+ <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
<!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
- <xsl:choose>
- <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$parentMarginLeft"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="svgWidth">
- <xsl:choose>
- <xsl:when test="@svg:width">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="@svg:width"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="svgX">
- <xsl:choose>
- <xsl:when test="@svg:x">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="@svg:x"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="leftPosition" select="$svgX - $parentMarginLeftNew - $previousFrameWidths"/>
- <xsl:variable name="svgY">
- <xsl:choose>
- <xsl:when test="@svg:y">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="@svg:y"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- if the frame is anchored on a paragraph -->
- <xsl:if test="@text:anchor-type='paragraph'">
- <xsl:comment>Next 'div' is emulating the top hight of a draw:frame.</xsl:comment>
- <!-- When the svg:y is set relativ to the paragraph content, the best way to emulate a positive height,
- is to add an invisbile division inbetween with a height.
- Often text will flow into this 'gap', which is handled separately!
- -->
- <xsl:if test="$svgY &gt; 0">
- <xsl:element name="div">
- <xsl:attribute name="style">
- <xsl:text>height:</xsl:text>
- <xsl:value-of select="$svgY"/>
- <xsl:text>cm;</xsl:text>
- </xsl:attribute>
- <xsl:text>&#160;</xsl:text>
- </xsl:element>
- </xsl:if>
- </xsl:if>
-
-
- <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
- <!--
- <xsl:choose>
- HEURISTIC: if the frame is anchored on a paragraph and the above gab is big enough to hold a text line,
- move it behind the text
- <xsl:when test="@text:anchor-type='paragraph' and
- (
- ($svgY &gt; 0.5) or
- ($svgX &gt; 4)
- ) and normalize-space($followingSibling) != ''">
- <xsl:apply-templates select="$followingSibling" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="true()"/>
- <xsl:with-param name="noDivBefore" select="false()"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY">
- <xsl:call-template name="createDrawFrame2">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="svgY" select="$svgY"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>-->
- <xsl:call-template name="createDrawFrame2">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="svgY" select="$svgY"/>
- </xsl:call-template>
- <!-- <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="true()"/>
- <xsl:with-param name="noDivBefore" select="false()"/>
- </xsl:apply-templates>
-
- </xsl:otherwise>
- </xsl:choose> -->
- </xsl:template>
-
- <xsl:template name="createDrawFrame2">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" />
- <xsl:param name="parentMarginLeftNew"/>
- <xsl:param name="leftPosition" />
- <xsl:param name="svgY" />
-
- <xsl:comment>Next 'div' is a draw:frame.</xsl:comment>
- <xsl:element name="div">
- <xsl:attribute name="style">
- <xsl:call-template name="widthAndHeight"/>
+ <xsl:choose>
+ <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$parentMarginLeft"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="svgWidth">
+ <xsl:choose>
+ <xsl:when test="@svg:width">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="@svg:width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="svgX">
+ <xsl:choose>
+ <xsl:when test="@svg:x">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="@svg:x"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="leftPosition" select="$svgX - $parentMarginLeftNew - $previousFrameWidths"/>
+ <xsl:variable name="svgY">
+ <xsl:choose>
+ <xsl:when test="@svg:y">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="@svg:y"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- if the frame is anchored on a paragraph -->
+ <xsl:if test="@text:anchor-type='paragraph'">
+ <xsl:comment>Next 'div' is emulating the top hight of a draw:frame.</xsl:comment>
+ <!-- When the svg:y is set relativ to the paragraph content, the best way to emulate a positive height,
+ is to add an invisbile division inbetween with a height.
+ Often text will flow into this 'gap', which is handled separately!
+ -->
+ <xsl:if test="$svgY &gt; 0">
+ <xsl:element name="div">
+ <xsl:attribute name="style">
+ <xsl:text>height:</xsl:text>
+ <xsl:value-of select="$svgY"/>
+ <xsl:text>cm;</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:if>
+
+
+ <!--
+ <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
+ <xsl:choose>
+ HEURISTIC: if the frame is anchored on a paragraph and the above gab is big enough to hold a text line,
+ move it behind the text
+ <xsl:when test="@text:anchor-type='paragraph' and
+ (
+ ($svgY &gt; 0.5) or
+ ($svgX &gt; 4)
+ ) and normalize-space($followingSibling) != ''">
+ <xsl:apply-templates select="$followingSibling" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="true()"/>
+ <xsl:with-param name="noDivBefore" select="false()"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY">
+ <xsl:call-template name="createDrawFrame2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="svgY" select="$svgY"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>-->
+ <xsl:call-template name="createDrawFrame2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="svgY" select="$svgY"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="true()"/>
+ <xsl:with-param name="noDivBefore" select="false()"/>
+ </xsl:apply-templates>
+ <!--
+
+ </xsl:otherwise>
+ </xsl:choose> -->
+ </xsl:template>
+
+ <xsl:template name="createDrawFrame2">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" />
+ <xsl:param name="parentMarginLeftNew"/>
+ <xsl:param name="leftPosition" />
+ <xsl:param name="svgY" />
+
+ <xsl:comment>Next 'div' is a draw:frame.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:attribute name="style">
+ <xsl:call-template name="widthAndHeight"/>
<!-- all images float (CSS float reltaive) with a left position calculated by svg:x - parentMarginLeft - previousFrameWidths -->
- <xsl:text> float:left; padding:0; position:relative; left:</xsl:text>
- <xsl:value-of select="$leftPosition"/>
- <xsl:text>cm; </xsl:text>
- <!-- if the frame is anchored on a char -->
- <xsl:if test="@text:anchor-type='char'">
- <xsl:text>top:</xsl:text>
- <xsl:value-of select="$svgY"/>
- <xsl:text>cm; </xsl:text>
- </xsl:if>
- </xsl:attribute>
- <xsl:apply-templates select="@*">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="node()">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="widthAndHeight">
- <xsl:if test="@svg:height | @svg:width">
- <xsl:choose>
- <xsl:when test="not(@svg:width)">
- <xsl:call-template name="svg:height"/>
- </xsl:when>
- <xsl:when test="not(@svg:height)">
- <xsl:call-template name="svg:width"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="svg:height"/>
- <xsl:call-template name="svg:width"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
+ <xsl:text> float:left; padding:0; position:relative; left:</xsl:text>
+ <xsl:value-of select="$leftPosition"/>
+ <xsl:text>cm; </xsl:text>
+ <!-- if the frame is anchored on a char -->
+ <xsl:if test="@text:anchor-type='char'">
+ <xsl:text>top:</xsl:text>
+ <xsl:value-of select="$svgY"/>
+ <xsl:text>cm; </xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:apply-templates select="@*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="node()">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="widthAndHeight">
+ <xsl:if test="@svg:height | @svg:width">
+ <xsl:choose>
+ <xsl:when test="not(@svg:width)">
+ <xsl:call-template name="svg:height"/>
+ </xsl:when>
+ <xsl:when test="not(@svg:height)">
+ <xsl:call-template name="svg:width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="svg:height"/>
+ <xsl:call-template name="svg:width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
<!-- ***************** -->
<!-- *** Text Span *** -->
<!-- ***************** -->
- <xsl:template match="text:span">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:span">
+ <xsl:param name="globalData"/>
<xsl:choose>
<xsl:when test="draw:frame">
- <!-- sometimes an ODF image is anchored as character and the
+ <!-- sometimes an ODF image is anchored as character and the
image frame appears within a span (which is not valid for HTML)
Heuristic: Neglecting the span assuming no text content aside
of frame within span -->
<xsl:apply-templates>
<xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
+ </xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:element name="span">
@@ -1051,7 +1087,7 @@
</xsl:element>
</xsl:otherwise>
</xsl:choose>
- </xsl:template>
+ </xsl:template>
@@ -1059,156 +1095,156 @@
<!-- *** Headings *** -->
<!-- **************** -->
- <xsl:template match="text:h">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:h">
+ <xsl:param name="globalData"/>
<!-- no creation of empty headings (without text content) -->
- <xsl:if test="text() or descendant::text()">
+ <xsl:if test="text() or descendant::text()">
<!-- The URL linking of an table-of-content is due to a bug (cp. bug id# 102311) not mapped as URL in the XML.
Linking of the table-of-content can therefore only be archieved by a work-around in HTML -->
- <xsl:call-template name="create-heading">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
+ <xsl:call-template name="create-heading">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
<!-- default matching for header elements -->
- <xsl:template name="create-heading">
- <xsl:param name="globalData"/>
-
- <xsl:variable name="headingLevel">
- <xsl:choose>
- <xsl:when test="@text:outline-level &lt; 6">
- <xsl:value-of select="@text:outline-level"/>
- </xsl:when>
- <xsl:otherwise>6</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="headertyp" select="concat('h', $headingLevel)"/>
- <xsl:element name="{$headertyp}">
+ <xsl:template name="create-heading">
+ <xsl:param name="globalData"/>
+
+ <xsl:variable name="headingLevel">
+ <xsl:choose>
+ <xsl:when test="@text:outline-level &lt; 6">
+ <xsl:value-of select="@text:outline-level"/>
+ </xsl:when>
+ <xsl:otherwise>6</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="headertyp" select="concat('h', $headingLevel)"/>
+ <xsl:element name="{$headertyp}">
<!-- outline style 'text:min-label-width' is interpreted as a CSS 'margin-right' attribute
NOTE: Should be handled as CSS style in style header -->
- <xsl:variable name="min-label" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
- <xsl:attribute name="class">
- <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
-
- <xsl:call-template name="create-heading-anchor">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
-
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
-
- </xsl:template>
-
- <xsl:template name="create-heading-anchor">
- <xsl:param name="globalData"/>
-
- <!-- writing out a heading number if desired.-->
- <!-- if a corresponding 'text:outline-style' exist or is not empty -->
- <xsl:choose>
- <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-format != ''">
-
- <!-- Every heading element will get an unique anchor for its file, from its hiearchy level and name:
- For example: The heading title 'My favorite heading' might get <a name="1_2_2_My_favorite_heading" /> -->
- <!-- creating an anchor for referencing the heading (e.g. from content table) -->
- <xsl:variable name="headingNumber">
- <xsl:call-template name="get-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="create-heading-anchor2">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="headingNumber" select="$headingNumber"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="create-heading-anchor2">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <xsl:template name="get-heading-number">
- <xsl:param name="globalData"/>
-
- <!-- write number prefix -->
- <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-prefix"/>
- <xsl:call-template name="write-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- <!-- write number suffix -->
- <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-suffix"/>
- </xsl:template>
+ <xsl:variable name="min-label" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+
+ <xsl:call-template name="create-heading-anchor">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+
+ </xsl:template>
+
+ <xsl:template name="create-heading-anchor">
+ <xsl:param name="globalData"/>
+
+ <!-- writing out a heading number if desired.-->
+ <!-- if a corresponding 'text:outline-style' exist or is not empty -->
+ <xsl:choose>
+ <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-format != ''">
+
+ <!-- Every heading element will get an unique anchor for its file, from its hiearchy level and name:
+ For example: The heading title 'My favorite heading' might get <a name="1_2_2_My_favorite_heading" /> -->
+ <!-- creating an anchor for referencing the heading (e.g. from content table) -->
+ <xsl:variable name="headingNumber">
+ <xsl:call-template name="get-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="create-heading-anchor2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="headingNumber" select="$headingNumber"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="create-heading-anchor2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template name="get-heading-number">
+ <xsl:param name="globalData"/>
+
+ <!-- write number prefix -->
+ <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-prefix"/>
+ <xsl:call-template name="write-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ <!-- write number suffix -->
+ <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-suffix"/>
+ </xsl:template>
<!-- creating an anchor for referencing the heading -->
- <xsl:template name="create-heading-anchor2">
- <xsl:param name="globalData"/>
- <xsl:param name="headingNumber" />
-
- <xsl:variable name="title">
- <xsl:apply-templates mode="concatenate"/>
- </xsl:variable>
- <!-- REFERENCE HANDLING - ANCHOR -->
- <xsl:element namespace="{$namespace}" name="a">
- <xsl:attribute name="id">
- <xsl:value-of select="translate(concat('a_',$headingNumber, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
- </xsl:attribute>
-
- <xsl:element name="span">
+ <xsl:template name="create-heading-anchor2">
+ <xsl:param name="globalData"/>
+ <xsl:param name="headingNumber" />
+
+ <xsl:variable name="title">
+ <xsl:apply-templates mode="concatenate"/>
+ </xsl:variable>
+ <!-- REFERENCE HANDLING - ANCHOR -->
+ <xsl:element namespace="{$namespace}" name="a">
+ <xsl:attribute name="id">
+ <xsl:value-of select="translate(concat('a_',$headingNumber, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
+ </xsl:attribute>
+
+ <xsl:element name="span">
<!-- outline style 'text:min-label-distance' is interpreted as a CSS 'margin-right' attribute
NOTE: Should be handled as CSS style in style header -->
- <xsl:variable name="minLabelDistance" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-distance"/>
- <xsl:variable name="minLabelWidth" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
-
- <xsl:if test="$minLabelDistance | $minLabelWidth">
- <xsl:attribute name="style">
- <xsl:if test="$minLabelDistance">
- <xsl:text>margin-right:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$minLabelDistance"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- <xsl:if test="$minLabelWidth">
- <xsl:text>min-width:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$minLabelWidth"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
- <xsl:copy-of select="$headingNumber"/>
- </xsl:element>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="write-heading-number">
- <xsl:param name="globalData"/>
+ <xsl:variable name="minLabelDistance" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-distance"/>
+ <xsl:variable name="minLabelWidth" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
+
+ <xsl:if test="$minLabelDistance | $minLabelWidth">
+ <xsl:attribute name="style">
+ <xsl:if test="$minLabelDistance">
+ <xsl:text>margin-right:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$minLabelDistance"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ <xsl:if test="$minLabelWidth">
+ <xsl:text>min-width:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$minLabelWidth"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$headingNumber"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="write-heading-number">
+ <xsl:param name="globalData"/>
<!-- By default heading start with '1', the parameter 'textStartValue' will only be set, if the attribute @text:start-value exist -->
- <xsl:choose>
- <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value">
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
- <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:choose>
+ <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value">
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
+ <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
<!--
Find the correct heading no., which is the sum of 'text:start-value'
@@ -1216,149 +1252,149 @@
If the 'text:start-value is not set the default value of '1' has to be taken.
If a heading number is found (e.g. text:outline-level='3') all heading numbers
for the higher levels have to be written out -->
- <xsl:template name="calc-heading-number">
- <xsl:param name="globalData"/>
- <xsl:param name="outlineLevel"/><!-- text level of the heading -->
- <xsl:param name="iOutlineLevel" select="1"/><!-- iterator, counts from 1 to the text level of the heading -->
- <xsl:param name="textStartValue" select="1"/><!-- text level to start with, default is '1' -->
+ <xsl:template name="calc-heading-number">
+ <xsl:param name="globalData"/>
+ <xsl:param name="outlineLevel"/><!-- text level of the heading -->
+ <xsl:param name="iOutlineLevel" select="1"/><!-- iterator, counts from 1 to the text level of the heading -->
+ <xsl:param name="textStartValue" select="1"/><!-- text level to start with, default is '1' -->
- <xsl:choose>
+ <xsl:choose>
<!-- iText levels counts up from '1' to outlineLevel
Which means writing a heading number from left to right -->
- <xsl:when test="$iOutlineLevel &lt; $outlineLevel">
+ <xsl:when test="$iOutlineLevel &lt; $outlineLevel">
<!-- Write preceding heading numbers -->
- <xsl:call-template name="writeNumber">
- <xsl:with-param name="numberDigit">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="0"/>
- <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($outlineLevel)]/@style:num-format"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value">
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
- <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
- <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
- <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:call-template name="writeNumber">
+ <xsl:with-param name="numberDigit">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="0"/>
+ <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($outlineLevel)]/@style:num-format"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value">
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
+ <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
+ <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
+ <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
<!-- Write preceding heading numbers -->
- <xsl:call-template name="writeNumber">
- <xsl:with-param name="numberDigit">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="$textStartValue"/>
- <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = $outlineLevel]/@style:num-format"/>
- <xsl:with-param name="last" select="true()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="writeNumber">
- <xsl:param name="numberDigit"/>
- <xsl:param name="numberFormat"/>
- <xsl:param name="last"/>
-
- <xsl:choose>
- <xsl:when test="not($numberFormat)">
- <xsl:number value="$numberDigit" format="1."/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="$last">
- <xsl:number value="$numberDigit" format="{$numberFormat}"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:number value="$numberDigit" format="{$numberFormat}."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="calc-heading-digit">
- <xsl:param name="value"/>
- <xsl:param name="currentoutlineLevel"/>
- <xsl:param name="i" select="1"/>
-
- <xsl:variable name="precedingoutlineLevel" select="preceding-sibling::text:h[$i]/@text:outline-level"/>
- <xsl:choose>
- <xsl:when test="$currentoutlineLevel = $precedingoutlineLevel">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="$value + 1"/>
- <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
- <xsl:with-param name="i" select="$i + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$currentoutlineLevel &lt; $precedingoutlineLevel">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="$value"/>
- <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
- <xsl:with-param name="i" select="$i + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:call-template name="writeNumber">
+ <xsl:with-param name="numberDigit">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="$textStartValue"/>
+ <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = $outlineLevel]/@style:num-format"/>
+ <xsl:with-param name="last" select="true()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="writeNumber">
+ <xsl:param name="numberDigit"/>
+ <xsl:param name="numberFormat"/>
+ <xsl:param name="last"/>
+
+ <xsl:choose>
+ <xsl:when test="not($numberFormat)">
+ <xsl:number value="$numberDigit" format="1."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$last">
+ <xsl:number value="$numberDigit" format="{$numberFormat}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$numberDigit" format="{$numberFormat}."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="calc-heading-digit">
+ <xsl:param name="value"/>
+ <xsl:param name="currentoutlineLevel"/>
+ <xsl:param name="i" select="1"/>
+
+ <xsl:variable name="precedingoutlineLevel" select="preceding-sibling::text:h[$i]/@text:outline-level"/>
+ <xsl:choose>
+ <xsl:when test="$currentoutlineLevel = $precedingoutlineLevel">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="$value + 1"/>
+ <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
+ <xsl:with-param name="i" select="$i + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$currentoutlineLevel &lt; $precedingoutlineLevel">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="$value"/>
+ <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
+ <xsl:with-param name="i" select="$i + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
<!-- Neglect Annotations -->
- <xsl:template match="office:annotation" mode="concatenate"/>
+ <xsl:template match="office:annotation" mode="concatenate"/>
<!-- Match text:placeholder child nodes (e.g. text) -->
- <xsl:template match="text:placeholder">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:placeholder">
+ <xsl:param name="globalData"/>
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:template>
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:template>
<!-- ************* -->
<!-- *** Link *** -->
<!-- ************* -->
- <xsl:template match="text:a | draw:a">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:a | draw:a">
+ <xsl:param name="globalData"/>
- <xsl:call-template name="create-common-anchor-link">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:template>
+ <xsl:call-template name="create-common-anchor-link">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:template>
- <xsl:template name="create-common-anchor-link">
- <xsl:param name="globalData"/>
+ <xsl:template name="create-common-anchor-link">
+ <xsl:param name="globalData"/>
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="create-href">
- <xsl:with-param name="href" select="@xlink:href"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:template>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:call-template name="create-href">
+ <xsl:with-param name="href" select="@xlink:href"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:template>
@@ -1367,80 +1403,80 @@
<!-- ******************* -->
<!-- currently suggesting that all draw:object-ole elements are images -->
- <xsl:template match="draw:image | draw:object-ole">
- <xsl:param name="globalData"/>
+ <xsl:template match="draw:image | draw:object-ole">
+ <xsl:param name="globalData"/>
- <xsl:choose>
- <xsl:when test="ancestor::text:p or parent::text:span or parent::text:h or parent::draw:a or parent::text:a or text:ruby-base">
+ <xsl:choose>
+ <xsl:when test="ancestor::text:p or parent::text:span or parent::text:h or parent::draw:a or parent::text:a or text:ruby-base">
<!-- XHTML does not allow the mapped elements to contain paragraphs -->
- <xsl:call-template name="create-image-element">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:call-template name="create-image-element">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
<!-- images are embedded in a paragraph, but are in CSS not able to express a horizontal alignment for themself.
A 'div' element taking over the image style would solve that problem, but is invalid as child of a paragraph -->
- <xsl:element name="p">
- <xsl:apply-templates select="@draw:style-name">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <xsl:call-template name="create-image-element">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="create-image-element">
- <xsl:param name="globalData"/>
-
- <xsl:element name="img">
- <xsl:if test="../@svg:width or ../@svg:height">
- <xsl:attribute name="style">
- <xsl:if test="../@svg:height">
- <xsl:text>height:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="../@svg:height"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- <xsl:if test="../@svg:width">
- <xsl:text>width:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="../@svg:width"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="alt">
- <xsl:choose>
- <xsl:when test="../svg:desc">
- <xsl:value-of select="../svg:desc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
+ <xsl:element name="p">
+ <xsl:apply-templates select="@draw:style-name">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <xsl:call-template name="create-image-element">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="create-image-element">
+ <xsl:param name="globalData"/>
+
+ <xsl:element name="img">
+ <xsl:if test="../@svg:width or ../@svg:height">
+ <xsl:attribute name="style">
+ <xsl:if test="../@svg:height">
+ <xsl:text>height:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="../@svg:height"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ <xsl:if test="../@svg:width">
+ <xsl:text>width:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="../@svg:width"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="alt">
+ <xsl:choose>
+ <xsl:when test="../svg:desc">
+ <xsl:value-of select="../svg:desc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
Accessibility Warning:
No alternate text ('svg:desc' element) set for
image '<xsl:value-of select="@xlink:href"/>'!</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
- <xsl:attribute name="src">
- <xsl:call-template name="create-href">
- <xsl:with-param name="href" select="@xlink:href"/>
- </xsl:call-template>
- </xsl:attribute>
+ <xsl:attribute name="src">
+ <xsl:call-template name="create-href">
+ <xsl:with-param name="href" select="@xlink:href"/>
+ </xsl:call-template>
+ </xsl:attribute>
<!-- style interpretation only, as no subelements are allowed for img in XHTML -->
- <xsl:apply-templates select="@draw:style-name">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
+ <xsl:apply-templates select="@draw:style-name">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
<!-- ************ -->
<!-- *** list *** -->
@@ -1487,212 +1523,212 @@
Further details beyond text:list-list..
-->
- <xsl:key name="listStyles" match=" /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style | /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style" use="@style:name"/>
+ <xsl:key name="listStyles" match=" /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style | /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style" use="@style:name"/>
<!--
A text list may only have text:list-item and text:list-header as children.
-->
- <xsl:template match="text:list">
- <xsl:param name="globalData"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="listLevel" select="1"/>
- <xsl:param name="listRestart" select="false()"/>
- <xsl:param name="itemLabel" select="''"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName" select="@text:style-name"/>
+ <xsl:template match="text:list">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="listLevel" select="1"/>
+ <xsl:param name="listRestart" select="false()"/>
+ <xsl:param name="itemLabel" select="''"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName" select="@text:style-name"/>
<!-- To choose list type - get the list style, with the same 'text:style-name' and same 'text:level' >-->
- <xsl:variable name="listStyleRTF">
- <xsl:variable name="listStyleInContentFile" select="key('listStyles', $listStyleName)"/>
- <xsl:choose>
- <xsl:when test="$listStyleInContentFile">
- <xsl:copy-of select="$listStyleInContentFile"/>
- </xsl:when>
- <xsl:when test="$globalData/office:styles/text:list-style[@style:name = $listStyleName]">
- <xsl:copy-of select="$globalData/office:styles/text:list-style[@style:name = $listStyleName]"/>
- </xsl:when>
- <xsl:when test="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]">
- <xsl:copy-of select="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="function-available('common:node-set')">
- <xsl:call-template name="create-list-type">
- <xsl:with-param name="listStyle" select="common:node-set($listStyleRTF)" />
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listStyleName" select="$listStyleName" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="function-available('xalan:nodeset')">
- <xsl:call-template name="create-list-type">
- <xsl:with-param name="listStyle" select="xalan:nodeset($listStyleRTF)" />
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listStyleName" select="$listStyleName" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="function-available('xt:node-set')">
- <xsl:call-template name="create-list-type">
- <xsl:with-param name="listStyle" select="xt:node-set($listStyleRTF)" />
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listStyleName" select="$listStyleName" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">The required node-set function was not found!</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="create-list-type">
- <xsl:param name="globalData"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="listLevel" />
- <xsl:param name="listRestart" />
- <xsl:param name="itemLabel"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName" />
-
- <!-- $globalData/styles-file/*/office:styles/ -->
- <xsl:variable name="listLevelStyle" select="$listStyle/*/*[@text:level = number($listLevel)]"/>
- <xsl:variable name="listIndent">
- <xsl:call-template name="getListIndent">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="firstPara" select="*[1]/*[name() = 'text:p' or name() = 'text:h'][1]"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="isEmptyList" select="not(*[1]/*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
- <xsl:variable name="listType">
- <xsl:choose>
+ <xsl:variable name="listStyleRTF">
+ <xsl:variable name="listStyleInContentFile" select="key('listStyles', $listStyleName)"/>
+ <xsl:choose>
+ <xsl:when test="$listStyleInContentFile">
+ <xsl:copy-of select="$listStyleInContentFile"/>
+ </xsl:when>
+ <xsl:when test="$globalData/office:styles/text:list-style[@style:name = $listStyleName]">
+ <xsl:copy-of select="$globalData/office:styles/text:list-style[@style:name = $listStyleName]"/>
+ </xsl:when>
+ <xsl:when test="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]">
+ <xsl:copy-of select="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('common:node-set')">
+ <xsl:call-template name="create-list-type">
+ <xsl:with-param name="listStyle" select="common:node-set($listStyleRTF)" />
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="function-available('xalan:nodeset')">
+ <xsl:call-template name="create-list-type">
+ <xsl:with-param name="listStyle" select="xalan:nodeset($listStyleRTF)" />
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="function-available('xt:node-set')">
+ <xsl:call-template name="create-list-type">
+ <xsl:with-param name="listStyle" select="xt:node-set($listStyleRTF)" />
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">The required node-set function was not found!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="create-list-type">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="listLevel" />
+ <xsl:param name="listRestart" />
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName" />
+
+ <!-- $globalData/styles-file/*/office:styles/ -->
+ <xsl:variable name="listLevelStyle" select="$listStyle/*/*[@text:level = number($listLevel)]"/>
+ <xsl:variable name="listIndent">
+ <xsl:call-template name="getListIndent">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="firstPara" select="*[1]/*[name() = 'text:p' or name() = 'text:h'][1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="isEmptyList" select="not(*[1]/*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
+ <xsl:variable name="listType">
+ <xsl:choose>
<!-- ordered list -->
- <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
- <xsl:text>ol</xsl:text>
- </xsl:when>
+ <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
+ <xsl:text>ol</xsl:text>
+ </xsl:when>
<!-- unordered list (bullet or image) -->
- <xsl:otherwise>
- <xsl:text>ul</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:element name="{$listType}">
- <xsl:apply-templates select="*[1]" mode="listItemSibling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset">
- <xsl:choose>
- <xsl:when test="$isListNumberingReset">
- <xsl:value-of select="true()"/>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:otherwise>
+ <xsl:text>ul</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$listType}">
+ <xsl:apply-templates select="*[1]" mode="listItemSibling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset">
+ <xsl:choose>
+ <xsl:when test="$isListNumberingReset">
+ <xsl:value-of select="true()"/>
+ </xsl:when>
+ <xsl:otherwise>
<!-- A list is empty if a text:list does not have a text:list-header or text:list-item (wildcard as only those can exist beyond a text:list), which contains a text:h or text:p -->
- <xsl:value-of select="not($isEmptyList)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listRestart">
- <xsl:choose>
- <xsl:when test="$listRestart">
- <xsl:value-of select="$listRestart"/>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:value-of select="not($isEmptyList)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listRestart">
+ <xsl:choose>
+ <xsl:when test="$listRestart">
+ <xsl:value-of select="$listRestart"/>
+ </xsl:when>
+ <xsl:otherwise>
<!-- descdendants restart their list numbering, when an ancestor is not empty -->
- <xsl:value-of select="not($isEmptyList)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="minLabelDist">
- <xsl:choose>
- <xsl:when test="$listLevelStyle/*/@text:min-label-distance">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-distance"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="minLabelWidth">
- <xsl:choose>
- <xsl:when test="$listLevelStyle/*/@text:min-label-width">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-width"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
+ <xsl:value-of select="not($isEmptyList)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="minLabelDist">
+ <xsl:choose>
+ <xsl:when test="$listLevelStyle/*/@text:min-label-distance">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-distance"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="minLabelWidth">
+ <xsl:choose>
+ <xsl:when test="$listLevelStyle/*/@text:min-label-width">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
<!-- See comment before text:list template -->
- <xsl:template name="getListIndent">
- <xsl:param name="globalData"/>
- <xsl:param name="listLevelStyle"/>
+ <xsl:template name="getListIndent">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLevelStyle"/>
<!-- The first paragraph of the list item (heading is special paragraph in ODF) -->
- <xsl:param name="firstPara" />
+ <xsl:param name="firstPara" />
<!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
- <xsl:variable name="firstParaStyles" select="$globalData/all-styles/style[@style:name = $firstPara/@text:style-name]/final-properties"/>
+ <xsl:variable name="firstParaStyles" select="$globalData/all-styles/style[@style:name = $firstPara/@text:style-name]/final-properties"/>
<!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
- <xsl:variable name="firstParaLeftMargin">
- <xsl:choose>
- <xsl:when test="contains($firstParaStyles, 'margin-left:')">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($firstParaStyles, 'margin-left:'), ';'))"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="spaceBefore">
- <xsl:choose>
- <xsl:when test="$listLevelStyle/*/@text:space-before">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$listLevelStyle/*/@text:space-before"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+ <xsl:variable name="firstParaLeftMargin">
+ <xsl:choose>
+ <xsl:when test="contains($firstParaStyles, 'margin-left:')">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($firstParaStyles, 'margin-left:'), ';'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spaceBefore">
+ <xsl:choose>
+ <xsl:when test="$listLevelStyle/*/@text:space-before">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$listLevelStyle/*/@text:space-before"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
<!-- Only if the left-margin of the first paragraph is positive the sum
text:space-before and fo:left-margin is taken as list indent -->
- <xsl:choose>
- <xsl:when test="$firstParaLeftMargin &gt; 0">
- <xsl:value-of select="$firstParaLeftMargin + $spaceBefore"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$spaceBefore"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:choose>
+ <xsl:when test="$firstParaLeftMargin &gt; 0">
+ <xsl:value-of select="$firstParaLeftMargin + $spaceBefore"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$spaceBefore"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
<!-- ****************** -->
<!-- *** list item *** -->
@@ -1714,105 +1750,105 @@
only used, when text does not fit in text:min-label-width (ignored)
-->
- <xsl:template match="text:list-item | text:list-header" mode="listItemSibling">
- <xsl:param name="globalData"/>
- <xsl:param name="firstitemLabelWidth"/>
- <xsl:param name="isEmptyList" select="not(*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelDist"/>
- <xsl:param name="minLabelWidth"/>
- <xsl:param name="listIndent" />
-
-
- <xsl:variable name="listIndentNew">
- <xsl:choose>
- <xsl:when test="$listIndent">
- <xsl:value-of select="$listIndent"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="getListIndent">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="firstPara" select="*[name() = 'text:p' or name() = 'text:h'][1]" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="itemNumberNew">
- <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
- <xsl:choose>
- <xsl:when test="$isEmptyList">
+ <xsl:template match="text:list-item | text:list-header" mode="listItemSibling">
+ <xsl:param name="globalData"/>
+ <xsl:param name="firstitemLabelWidth"/>
+ <xsl:param name="isEmptyList" select="not(*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelDist"/>
+ <xsl:param name="minLabelWidth"/>
+ <xsl:param name="listIndent" />
+
+
+ <xsl:variable name="listIndentNew">
+ <xsl:choose>
+ <xsl:when test="$listIndent">
+ <xsl:value-of select="$listIndent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="getListIndent">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="firstPara" select="*[name() = 'text:p' or name() = 'text:h'][1]" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="itemNumberNew">
+ <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
+ <xsl:choose>
+ <xsl:when test="$isEmptyList">
<!-- An empty list item (no text:h/text:p as child), will not count as item and does not increment the count. -->
- <xsl:variable name="tempItemNumber">
- <xsl:choose>
+ <xsl:variable name="tempItemNumber">
+ <xsl:choose>
<!-- siblings will be incremented by one -->
- <xsl:when test="$itemNumber">
- <xsl:value-of select="$itemNumber + 1"/>
- </xsl:when>
+ <xsl:when test="$itemNumber">
+ <xsl:value-of select="$itemNumber + 1"/>
+ </xsl:when>
<!-- if a higher list level had content the numbering starts with 1 -->
- <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
- <xsl:value-of select="1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="getItemNumber">
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
+ <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="getItemNumber">
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
<!-- in case the empty list-item is the first list-item in document -->
- <xsl:when test="$tempItemNumber = 1">
- <xsl:value-of select="1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tempItemNumber - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="@text:start-value">
- <xsl:value-of select="@text:start-value"/>
- </xsl:when>
+ <xsl:when test="$tempItemNumber = 1">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tempItemNumber - 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@text:start-value">
+ <xsl:value-of select="@text:start-value"/>
+ </xsl:when>
<!-- text:start-value from list level style will only be taken on the first list-item of a list -->
- <xsl:when test="$listLevelStyle/@text:start-value and count(preceding-sibling::text:list-item) = 0">
- <xsl:value-of select="$listLevelStyle/@text:start-value"/>
- </xsl:when>
+ <xsl:when test="$listLevelStyle/@text:start-value and count(preceding-sibling::text:list-item) = 0">
+ <xsl:value-of select="$listLevelStyle/@text:start-value"/>
+ </xsl:when>
<!-- siblings will be incremented by one -->
- <xsl:when test="$itemNumber">
- <xsl:value-of select="$itemNumber + 1"/>
- </xsl:when>
+ <xsl:when test="$itemNumber">
+ <xsl:value-of select="$itemNumber + 1"/>
+ </xsl:when>
<!-- if a higher list level had content the numbering starts with 1 -->
- <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
- <xsl:value-of select="1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="getItemNumber">
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:variable>
- <xsl:variable name="itemLabelNew">
- <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
+ <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="getItemNumber">
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="itemLabelNew">
+ <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
<!--
A numbered label (e.g. 2.C.III) is created for every text:list-item/header.
Above list levels are listed in the label, if the list-style requires this. Levels are separated by a '.'
@@ -1821,1017 +1857,1016 @@
The prefix/suffix (as well list level dependent) comes before and after the complete label (after truncation)
-->
<!-- Numbered label will be generated -->
- <xsl:call-template name="createItemLabel">
- <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevelsToDisplay">
- <xsl:variable name="display" select="$listLevelStyle/@text:display-levels"/>
- <xsl:choose>
- <xsl:when test="$display">
- <xsl:value-of select="$display"/>
- </xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:variable>
- <xsl:element name="li">
- <xsl:choose>
- <xsl:when test="$isEmptyList">
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
- <xsl:with-param name="listLevel" select="$listLevel + 1"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:call-template name="createItemLabel">
+ <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevelsToDisplay">
+ <xsl:variable name="display" select="$listLevelStyle/@text:display-levels"/>
+ <xsl:choose>
+ <xsl:when test="$display">
+ <xsl:value-of select="$display"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:element name="li">
+ <xsl:choose>
+ <xsl:when test="$isEmptyList">
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
+ <xsl:with-param name="listLevel" select="$listLevel + 1"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
<!-- Possible following children are text:h, text:p, list:text, text:soft-page-break -->
- <xsl:apply-templates mode="list-item-children" select="*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:apply-templates mode="list-item-children" select="*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
<!-- The new created label is given to the children -->
- <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
- <xsl:with-param name="listLabelElement">
- <xsl:choose>
- <xsl:when test="name() = 'text:list-header'"/>
- <xsl:otherwise>
- <xsl:variable name="listLabelWidth">
- <xsl:choose>
- <xsl:when test="$minLabelWidth &gt; $minLabelDist">
- <xsl:value-of select="$minLabelWidth"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$minLabelDist"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+ <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
+ <xsl:with-param name="listLabelElement">
+ <xsl:choose>
+ <xsl:when test="name() = 'text:list-header'"/>
+ <xsl:otherwise>
+ <xsl:variable name="listLabelWidth">
+ <xsl:choose>
+ <xsl:when test="$minLabelWidth &gt; $minLabelDist">
+ <xsl:value-of select="$minLabelWidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$minLabelDist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
<!-- Numbering is being done by this transformation creating a HTML span representing the number label
The html:span represents the list item/header label (e.g. 1.A.III)
As the html:span is usually a inline element is formated by CSS as block element to use width upon it,
to disable the caridge return float:left is used and later neglected -->
- <xsl:element name="span">
- <xsl:if test="$listLevelStyle/@text:style-name">
- <xsl:attribute name="class">
- <xsl:value-of select="$listLevelStyle/@text:style-name"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="style">
- <xsl:text>display:block;float:</xsl:text>
+ <xsl:element name="span">
+ <xsl:if test="$listLevelStyle/@text:style-name">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$listLevelStyle/@text:style-name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="style">
+ <xsl:text>display:block;float:</xsl:text>
<!-- 2DO: Svante - copy this functionality for other used margin:left (in western country 'left') -->
- <xsl:call-template name="getOppositeWritingDirection">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
- </xsl:call-template>
- <xsl:text>;min-width:</xsl:text>
- <xsl:value-of select="$listLabelWidth"/>
- <xsl:text>cm</xsl:text>
- </xsl:attribute>
- <xsl:variable name="labelContent">
- <xsl:choose>
- <xsl:when test="text:number">
- <xsl:apply-templates select="text:number" mode="listnumber"/>
- </xsl:when>
- <xsl:when test="name($listLevelStyle) = 'text:list-level-style-bullet'">
- <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
- <xsl:value-of select="$listLevelStyle/@text:bullet-char"/>
- <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
- </xsl:when>
- <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
- <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
- <xsl:value-of select="$itemLabelNew"/>
- <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:call-template name="getOppositeWritingDirection">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
+ </xsl:call-template>
+ <xsl:text>;min-width:</xsl:text>
+ <xsl:value-of select="$listLabelWidth"/>
+ <xsl:text>cm</xsl:text>
+ </xsl:attribute>
+ <xsl:variable name="labelContent">
+ <xsl:choose>
+ <xsl:when test="text:number">
+ <xsl:apply-templates select="text:number" mode="listnumber"/>
+ </xsl:when>
+ <xsl:when test="name($listLevelStyle) = 'text:list-level-style-bullet'">
+ <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
+ <xsl:value-of select="$listLevelStyle/@text:bullet-char"/>
+ <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
+ </xsl:when>
+ <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
+ <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
+ <xsl:value-of select="$itemLabelNew"/>
+ <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
+ </xsl:when>
+ <xsl:otherwise>
<!-- Listing with image as bullets, taken from the list style's href -->
- <xsl:value-of select="$listLevelStyle/@xlink:href"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Some browsers have problem with stand-alone elements (e.g. <span/>)
- Therefore a comment is being inserted into an empty label -->
- <xsl:choose>
- <xsl:when test="$labelContent != ''">
- <xsl:value-of select="$labelContent"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:comment>&#160;</xsl:comment>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="listLabelEmptyElement">
- <xsl:variable name="listLabelWidth">
- <xsl:choose>
- <xsl:when test="$minLabelWidth &gt; $minLabelDist">
- <xsl:value-of select="$minLabelWidth"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$minLabelDist"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:element name="span">
- <xsl:if test="$listLevelStyle/@text:style-name">
- <xsl:attribute name="class">
- <xsl:value-of select="$listLevelStyle/@text:style-name"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="style">
- <xsl:text>display:block;float:</xsl:text>
- <xsl:call-template name="getOppositeWritingDirection">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
- </xsl:call-template>
- <xsl:text>;min-width:</xsl:text>
- <xsl:value-of select="$listLabelWidth"/>
- <xsl:text>cm</xsl:text>
- </xsl:attribute>
- <xsl:comment>&#160;</xsl:comment>
- </xsl:element>
- </xsl:with-param>
- <xsl:with-param name="listLevel" select="$listLevel + 1"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndentNew"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
- <xsl:with-param name="listIndent">
- <xsl:choose>
- <xsl:when test="not($isEmptyList)">
- <xsl:value-of select="$listIndentNew"/>
- </xsl:when>
- </xsl:choose>
- </xsl:with-param>
+ <xsl:value-of select="$listLevelStyle/@xlink:href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Some browsers have problem with stand-alone elements (e.g. <span/>)
+ Therefore a comment is being inserted into an empty label -->
+ <xsl:choose>
+ <xsl:when test="$labelContent != ''">
+ <xsl:value-of select="$labelContent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>&#160;</xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="listLabelEmptyElement">
+ <xsl:variable name="listLabelWidth">
+ <xsl:choose>
+ <xsl:when test="$minLabelWidth &gt; $minLabelDist">
+ <xsl:value-of select="$minLabelWidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$minLabelDist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="span">
+ <xsl:if test="$listLevelStyle/@text:style-name">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$listLevelStyle/@text:style-name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="style">
+ <xsl:text>display:block;float:</xsl:text>
+ <xsl:call-template name="getOppositeWritingDirection">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
+ </xsl:call-template>
+ <xsl:text>;min-width:</xsl:text>
+ <xsl:value-of select="$listLabelWidth"/>
+ <xsl:text>cm</xsl:text>
+ </xsl:attribute>
+ <xsl:comment>&#160;</xsl:comment>
+ </xsl:element>
+ </xsl:with-param>
+ <xsl:with-param name="listLevel" select="$listLevel + 1"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndentNew"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
+ <xsl:with-param name="listIndent">
+ <xsl:choose>
+ <xsl:when test="not($isEmptyList)">
+ <xsl:value-of select="$listIndentNew"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
<!-- Receives the same parent label -->
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="minLabelDist" select="$minLabelDist"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template name="getOppositeWritingDirection">
- <xsl:param name="globalData"/>
- <xsl:param name="paraStyleName"/>
-
- <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paraStyleName]/final-properties"/>
-
- <xsl:choose>
- <xsl:when test="contains($imageParagraphStyle, 'writing-mode:')">
- <xsl:choose>
- <xsl:when test="contains(substring-before(substring-after($imageParagraphStyle, 'writing-mode:'), ';'), 'rl')">right</xsl:when>
- <xsl:otherwise>left</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>left</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="text:number" mode="listnumber">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="text:number" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="listLabelElement"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle" />
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLabelElement" select="$listLabelElement"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="minLabelDist" select="$minLabelDist"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template name="getOppositeWritingDirection">
+ <xsl:param name="globalData"/>
+ <xsl:param name="paraStyleName"/>
+
+ <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paraStyleName]/final-properties"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($imageParagraphStyle, 'writing-mode:')">
+ <xsl:choose>
+ <xsl:when test="contains(substring-before(substring-after($imageParagraphStyle, 'writing-mode:'), ';'), 'rl')">right</xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="text:number" mode="listnumber">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="text:number" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLabelElement"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle" />
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLabelElement" select="$listLabelElement"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
<!-- Each key element holds the set of all text:list-item/text:list-header of a certain level and a certain style -->
- <xsl:key name="getListItemsByLevelAndStyle" use="concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)" match="text:list-item | text:list-header"/>
+ <xsl:key name="getListItemsByLevelAndStyle" use="concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)" match="text:list-item | text:list-header"/>
<!-- Each key element holds the set of all text:list-item/text:list-header of a certain style -->
- <xsl:key name="getListItemsByStyle" use="ancestor::text:list/@text:style-name" match="text:list-item | text:list-header"/>
+ <xsl:key name="getListItemsByStyle" use="ancestor::text:list/@text:style-name" match="text:list-item | text:list-header"/>
<!-- The Numbering start value (or offset from regular counteing) is used at the first item of offset,
but have to be reused on following item/headers with no text:start-value -->
- <xsl:template name="getItemNumber">
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="listStyle"/>
-
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="preceding::text:list-item[generate-id(key('getListItemsByLevelAndStyle', concat($listLevel, $listStyleName))) = generate-id(key('getListItemsByLevelAndStyle', concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)))]"/>
-
- <xsl:with-param name="precedingListItemsOfSameStyle" select="preceding::text:list-item[generate-id(key('getListItemsByStyle', $listStyleName)) = generate-id(key('getListItemsByStyle', ancestor::text:list/@text:style-name))]"/>
- </xsl:call-template>
- </xsl:template>
+ <xsl:template name="getItemNumber">
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="listStyle"/>
+
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="preceding::text:list-item[generate-id(key('getListItemsByLevelAndStyle', concat($listLevel, $listStyleName))) = generate-id(key('getListItemsByLevelAndStyle', concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)))]"/>
+
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="preceding::text:list-item[generate-id(key('getListItemsByStyle', $listStyleName)) = generate-id(key('getListItemsByStyle', ancestor::text:list/@text:style-name))]"/>
+ </xsl:call-template>
+ </xsl:template>
<!-- When there is a text:start-value the last have to be found and added to the number -->
- <xsl:template name="countListItemTillStartValue">
- <xsl:param name="IteratorSameLevelAndStyle" select="1"/>
- <xsl:param name="IteratorSameStyle" select="1"/>
- <xsl:param name="itemNumber" select="1"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="precedingListItemsOfSameLevelAndStyle" />
- <xsl:param name="precedingListItemsOfSameLevelAndStyleCount" select="count($precedingListItemsOfSameLevelAndStyle)"/>
- <xsl:param name="precedingListItemsOfSameStyle" />
- <xsl:param name="precedingListItemsOfSameStyleCount" select="count($precedingListItemsOfSameStyle)"/>
+ <xsl:template name="countListItemTillStartValue">
+ <xsl:param name="IteratorSameLevelAndStyle" select="1"/>
+ <xsl:param name="IteratorSameStyle" select="1"/>
+ <xsl:param name="itemNumber" select="1"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="precedingListItemsOfSameLevelAndStyle" />
+ <xsl:param name="precedingListItemsOfSameLevelAndStyleCount" select="count($precedingListItemsOfSameLevelAndStyle)"/>
+ <xsl:param name="precedingListItemsOfSameStyle" />
+ <xsl:param name="precedingListItemsOfSameStyleCount" select="count($precedingListItemsOfSameStyle)"/>
<!-- E.g.: If a list level 2 number is searched, a level 3 with content found with only a level 1 parent with content,
the level 3 gets a 'pseudoLevel' -->
- <xsl:param name="pseudoLevel" select="0" />
+ <xsl:param name="pseudoLevel" select="0" />
<!-- set the next of preceding list items. Starting from the current to the next previous text:list-item -->
- <xsl:variable name="precedingListItemOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle[$precedingListItemsOfSameLevelAndStyleCount - $IteratorSameLevelAndStyle + 1]"/>
- <xsl:variable name="precedingListItemOfSameStyle" select="$precedingListItemsOfSameStyle[$precedingListItemsOfSameStyleCount - $IteratorSameStyle + 1]"/>
- <xsl:choose>
- <xsl:when test="($precedingListItemOfSameStyle and $precedingListItemOfSameLevelAndStyle) or ($precedingListItemOfSameStyle and $listStyle/text:list-style/@text:consecutive-numbering)">
- <xsl:for-each select="$precedingListItemOfSameStyle">
- <xsl:choose>
+ <xsl:variable name="precedingListItemOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle[$precedingListItemsOfSameLevelAndStyleCount - $IteratorSameLevelAndStyle + 1]"/>
+ <xsl:variable name="precedingListItemOfSameStyle" select="$precedingListItemsOfSameStyle[$precedingListItemsOfSameStyleCount - $IteratorSameStyle + 1]"/>
+ <xsl:choose>
+ <xsl:when test="($precedingListItemOfSameStyle and $precedingListItemOfSameLevelAndStyle) or ($precedingListItemOfSameStyle and $listStyle/text:list-style/@text:consecutive-numbering)">
+ <xsl:for-each select="$precedingListItemOfSameStyle">
+ <xsl:choose>
<!-- if it is a higher list level element -->
- <xsl:when test="$listStyle/text:list-style/@text:consecutive-numbering">
-
- <xsl:call-template name="countListItem">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:when test="$listStyle/text:list-style/@text:consecutive-numbering">
+
+ <xsl:call-template name="countListItem">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
<!-- NOT CONSECUTIVE NUMBERING -->
- <xsl:variable name="currentListLevel" select="count(ancestor::text:list)"/>
- <xsl:choose>
+ <xsl:variable name="currentListLevel" select="count(ancestor::text:list)"/>
+ <xsl:choose>
<!-- IF IT IS A HIGHER LIST LEVEL ELEMENT -->
- <xsl:when test="$currentListLevel &lt; $listLevel">
- <xsl:choose>
+ <xsl:when test="$currentListLevel &lt; $listLevel">
+ <xsl:choose>
<!-- if it has content the counting is ended -->
- <xsl:when test="*[name() = 'text:h' or name() = 'text:p']">
+ <xsl:when test="*[name() = 'text:h' or name() = 'text:p']">
<!-- 2DO: Perhaps the children still have to be processed -->
- <xsl:value-of select="$itemNumber + $pseudoLevel"/>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:value-of select="$itemNumber + $pseudoLevel"/>
+ </xsl:when>
+ <xsl:otherwise>
<!-- if it is empty the counting continues -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
<!-- IF IT IS A LIST LEVEL ELEMENT OF THE COUNTING LEVEL -->
- <xsl:when test="$currentListLevel = $listLevel">
- <xsl:call-template name="countListItem">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:when test="$currentListLevel = $listLevel">
+ <xsl:call-template name="countListItem">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
<!-- list item below the current level does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel">
- <xsl:choose>
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel">
+ <xsl:choose>
<!-- empty list item does not count -->
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
- <xsl:value-of select="$pseudoLevel"/>
- </xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$itemNumber"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="countListItem">
- <xsl:param name="IteratorSameLevelAndStyle"/>
- <xsl:param name="IteratorSameStyle"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="precedingListItemsOfSameLevelAndStyle"/>
- <xsl:param name="precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:param name="precedingListItemsOfSameStyle"/>
- <xsl:param name="precedingListItemsOfSameStyleCount"/>
- <xsl:param name="pseudoLevel" />
-
- <xsl:choose>
- <xsl:when test="@text:start-value">
- <xsl:choose>
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <xsl:value-of select="$pseudoLevel"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$itemNumber"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="countListItem">
+ <xsl:param name="IteratorSameLevelAndStyle"/>
+ <xsl:param name="IteratorSameStyle"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:param name="precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:param name="precedingListItemsOfSameStyle"/>
+ <xsl:param name="precedingListItemsOfSameStyleCount"/>
+ <xsl:param name="pseudoLevel" />
+
+ <xsl:choose>
+ <xsl:when test="@text:start-value">
+ <xsl:choose>
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
<!-- empty list item does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$itemNumber + @text:start-value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$listLevelStyle/@text:start-value">
- <xsl:choose>
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$itemNumber + @text:start-value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$listLevelStyle/@text:start-value">
+ <xsl:choose>
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
<!-- empty list item does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$itemNumber + $listLevelStyle/@text:start-value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$itemNumber + $listLevelStyle/@text:start-value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
<!-- empty list item does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
<!-- count on till you find a start-value or the end is reached -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber + 1"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="0" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber + 1"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="0" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
<!-- Creates the list label containing the number, which is separated by '.' between the levels.
Depending on the levels to display (listLevelsToDisplay) -->
- <xsl:template name="createItemLabel">
- <xsl:param name="itemLabel" select="''"/>
- <xsl:param name="itemNumber" />
- <xsl:param name="listLevel" />
- <xsl:param name="listLevelStyle" />
- <xsl:param name="listLevelsToDisplay" />
-
- <xsl:choose>
- <xsl:when test="$listLevelsToDisplay &lt; $listLevel">
- <xsl:call-template name="truncLabel">
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber" />
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle" />
- <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="numberedSymbol">
- <xsl:comment>&#160;</xsl:comment>
- <!-- only give out a number when number format is not empty -->
- <xsl:if test="$listLevelStyle/@style:num-format != ''">
- <xsl:number value="$itemNumber" format="{$listLevelStyle/@style:num-format}"/>
- </xsl:if>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$listLevelsToDisplay != 1">
- <xsl:value-of select="concat($itemLabel, '.' , $numberedSymbol)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$numberedSymbol"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="truncLabel">
- <xsl:param name="itemLabel" />
- <xsl:param name="itemNumber" />
- <xsl:param name="listLevel" />
- <xsl:param name="listLevelStyle" />
- <xsl:param name="listLevelsToDisplay" />
- <xsl:param name="listStyle" />
- <xsl:param name="listStyleName" />
-
- <xsl:call-template name="createItemLabel">
- <xsl:with-param name="itemLabel">
- <xsl:if test="contains($itemLabel, '.')">
- <xsl:value-of select="substring-after($itemLabel, '.')"/>
- </xsl:if>
- </xsl:with-param>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel - 1"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
- </xsl:call-template>
- </xsl:template>
-
-
- <xsl:template match="text:p" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="listLabelElement"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <!-- 2DO page alignment fix - PART1 -->
-
- <!-- xhtml:p may only contain inline elements.
- If there is one frame beyond, div must be used! -->
- <xsl:variable name="elementName">
- <xsl:choose>
- <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
- <xsl:otherwise>p</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:element name="{$elementName}">
- <xsl:call-template name="create-list-style">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="styleName" select="@text:style-name"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="$listLabelElement">
- <xsl:copy-of select="$listLabelElement"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$listLabelEmptyElement"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$minLabelWidth"/>
- </xsl:apply-templates>
+ <xsl:template name="createItemLabel">
+ <xsl:param name="itemLabel" select="''"/>
+ <xsl:param name="itemNumber" />
+ <xsl:param name="listLevel" />
+ <xsl:param name="listLevelStyle" />
+ <xsl:param name="listLevelsToDisplay" />
+
+ <xsl:choose>
+ <xsl:when test="$listLevelsToDisplay &lt; $listLevel">
+ <xsl:call-template name="truncLabel">
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber" />
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle" />
+ <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="numberedSymbol">
+ <xsl:comment>&#160;</xsl:comment>
+ <!-- only give out a number when number format is not empty -->
+ <xsl:if test="$listLevelStyle/@style:num-format != ''">
+ <xsl:number value="$itemNumber" format="{$listLevelStyle/@style:num-format}"/>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$listLevelsToDisplay != 1">
+ <xsl:value-of select="concat($itemLabel, '.' , $numberedSymbol)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$numberedSymbol"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="truncLabel">
+ <xsl:param name="itemLabel" />
+ <xsl:param name="itemNumber" />
+ <xsl:param name="listLevel" />
+ <xsl:param name="listLevelStyle" />
+ <xsl:param name="listLevelsToDisplay" />
+ <xsl:param name="listStyle" />
+ <xsl:param name="listStyleName" />
+
+ <xsl:call-template name="createItemLabel">
+ <xsl:with-param name="itemLabel">
+ <xsl:if test="contains($itemLabel, '.')">
+ <xsl:value-of select="substring-after($itemLabel, '.')"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel - 1"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
+ </xsl:call-template>
+ </xsl:template>
+
+
+ <xsl:template match="text:p" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLabelElement"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <!-- 2DO page alignment fix - PART1 -->
+
+ <!-- xhtml:p may only contain inline elements.
+ If there is one frame beyond, div must be used! -->
+ <xsl:variable name="elementName">
+ <xsl:choose>
+ <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
+ <xsl:otherwise>p</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$elementName}">
+ <xsl:call-template name="create-list-style">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="styleName" select="@text:style-name"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$listLabelElement">
+ <xsl:copy-of select="$listLabelElement"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$listLabelEmptyElement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$minLabelWidth"/>
+ </xsl:apply-templates>
<!-- this span disables the float necessary to bring two block elements on one line. It contains a space as IE6 bug workaround -->
- <span class="odfLiEnd"></span>
- <xsl:text>&#160;</xsl:text>
- </xsl:element>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
+ <span class="odfLiEnd"></span>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:element>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
<!-- Neglecting the left margin behavior for headings for now -->
- <xsl:template match="text:h" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="listLabelElement"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <xsl:element name="h">
- <xsl:call-template name="create-list-style">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="styleName" select="@text:style-name"/>
- </xsl:call-template>
- <xsl:variable name="title">
- <xsl:apply-templates mode="concatenate"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$listLabelElement">
- <xsl:copy-of select="$listLabelElement"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$listLabelEmptyElement"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- REFERENCE HANDLING - ANCHOR -->
- <xsl:element namespace="{$namespace}" name="a">
- <xsl:attribute name="id">
- <xsl:value-of select="translate(concat('a_',$listLabelElement, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:element>
+ <xsl:template match="text:h" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLabelElement"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <xsl:element name="h">
+ <xsl:call-template name="create-list-style">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="styleName" select="@text:style-name"/>
+ </xsl:call-template>
+ <xsl:variable name="title">
+ <xsl:apply-templates mode="concatenate"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$listLabelElement">
+ <xsl:copy-of select="$listLabelElement"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$listLabelEmptyElement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- REFERENCE HANDLING - ANCHOR -->
+ <xsl:element namespace="{$namespace}" name="a">
+ <xsl:attribute name="id">
+ <xsl:value-of select="translate(concat('a_',$listLabelElement, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:element>
<!-- this span disables the float necessary to bring two block elements on one line. It contains a space as IE6 bug workaround -->
- <span class="odfLiEnd"></span>
- <xsl:text>&#160;</xsl:text>
- </xsl:element>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
-
- <xsl:template match="*" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <xsl:apply-templates select="self::*">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="*" mode="listItemSibling">
- <xsl:param name="globalData"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
-
- <xsl:apply-templates select="self::*">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
+ <span class="odfLiEnd"></span>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:element>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+ <xsl:template match="*" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <xsl:apply-templates select="self::*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="*" mode="listItemSibling">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+
+ <xsl:apply-templates select="self::*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
<!-- receives the same parent label, only with a different itemNumber -->
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
<!-- receives the same parent label, only with a different itemNumber -->
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="text()" mode="list-item-children">
- <xsl:value-of select="."/>
- </xsl:template>
-
-
- <xsl:template name="create-list-style">
- <xsl:param name="globalData"/>
- <xsl:param name="listIndent" select="0"/>
- <xsl:param name="styleName"/>
-
- <xsl:if test="$styleName">
- <xsl:attribute name="class">
- <xsl:value-of select="translate($styleName, '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="style">
- <xsl:text>margin-</xsl:text>
- <xsl:call-template name="getOppositeWritingDirection">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
- </xsl:call-template>
- <xsl:text>:</xsl:text>
- <xsl:value-of select="$listIndent"/>
- <xsl:text>cm;</xsl:text>
- </xsl:attribute>
- </xsl:template>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="list-item-children">
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+
+ <xsl:template name="create-list-style">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listIndent" select="0"/>
+ <xsl:param name="styleName"/>
+
+ <xsl:if test="$styleName">
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate($styleName, '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="style">
+ <xsl:text>margin-</xsl:text>
+ <xsl:call-template name="getOppositeWritingDirection">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
+ </xsl:call-template>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="$listIndent"/>
+ <xsl:text>cm;</xsl:text>
+ </xsl:attribute>
+ </xsl:template>
<!-- ********************************************** -->
<!-- *** Text Section (contains: draw:text-box) *** -->
<!-- ********************************************** -->
- <xsl:template match="text:section">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:section">
+ <xsl:param name="globalData"/>
- <xsl:if test="not(contains(@text:display, 'none'))">
- <xsl:comment>Next 'div' was a 'text:section'.</xsl:comment>
- <xsl:element name="div">
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:if>
- </xsl:template>
+ <xsl:if test="not(contains(@text:display, 'none'))">
+ <xsl:comment>Next 'div' was a 'text:section'.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
<!-- Hidden text dependend on Office variables:
The text is not shown, if condition is 'true'.
Implemented solely for conditons as '<VARIABLE>==0' or '<VARIABLE>==1'
-->
- <xsl:key match="text:variable-set" name="varSet" use="@text:name"/>
- <xsl:template match="text:hidden-text">
- <xsl:param name="globalData"/>
-
- <xsl:variable name="varName" select="substring-before(@text:condition, '==')"/>
- <xsl:variable name="varValue" select="substring-after(@text:condition, '==')"/>
- <xsl:choose>
- <xsl:when test="key('varSet', $varName)/@text:value != $varValue">
- <xsl:value-of select="@text:string-value"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:comment>
- <xsl:value-of select="$varName"/>
- <xsl:value-of select="@text:string-value"/>
- <xsl:value-of select="$varName"/>
- </xsl:comment>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name-->
- <xsl:param name="globalData"/>
-
- <xsl:attribute name="class">
- <xsl:value-of select="translate(., '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
- </xsl:template>
+ <xsl:key match="text:variable-set" name="varSet" use="@text:name"/>
+ <xsl:template match="text:hidden-text">
+ <xsl:param name="globalData"/>
+
+ <xsl:variable name="varName" select="substring-before(@text:condition, '==')"/>
+ <xsl:variable name="varValue" select="substring-after(@text:condition, '==')"/>
+ <xsl:choose>
+ <xsl:when test="key('varSet', $varName)/@text:value != $varValue">
+ <xsl:value-of select="@text:string-value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>
+ <xsl:value-of select="$varName"/>
+ <xsl:value-of select="@text:string-value"/>
+ <xsl:value-of select="$varName"/>
+ </xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name-->
+ <xsl:param name="globalData"/>
+
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate(., '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+ </xsl:template>
<!-- ***************** -->
<!-- *** Footnotes *** -->
<!-- ***************** -->
- <xsl:template match="text:note">
- <xsl:param name="globalData"/>
+ <xsl:template match="text:note">
+ <xsl:param name="globalData"/>
<!-- get style configuration -->
- <xsl:variable name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
-
- <xsl:variable name="titlePrefix">
- <xsl:choose>
- <xsl:when test="@text:note-class = 'footnote'">
- <xsl:text>Footnote: </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>Endnote: </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+ <xsl:variable name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
+
+ <xsl:variable name="titlePrefix">
+ <xsl:choose>
+ <xsl:when test="@text:note-class = 'footnote'">
+ <xsl:text>Footnote: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Endnote: </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
<!-- write anchor -->
- <xsl:element name="span">
- <xsl:attribute name="class">
- <xsl:value-of select="$footnoteConfig/@text:citation-body-style-name"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$titlePrefix"/>
- <xsl:apply-templates mode="textOnly" select="text:note-body"/>
- </xsl:attribute>
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#', @text:id)"/>
- </xsl:attribute>
- <xsl:attribute name="id">
- <xsl:value-of select="concat('body_', @text:id)"/>
- </xsl:attribute>
- <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
- </xsl:element>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="*" mode="textOnly">
- <xsl:apply-templates select="* | text()" mode="textOnly" />
- </xsl:template>
-
- <xsl:template match="text()" mode="textOnly">
- <xsl:value-of select="."/>
- </xsl:template>
+ <xsl:element name="span">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$footnoteConfig/@text:citation-body-style-name"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$titlePrefix"/>
+ <xsl:apply-templates mode="textOnly" select="text:note-body"/>
+ </xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#', @text:id)"/>
+ </xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:value-of select="concat('body_', @text:id)"/>
+ </xsl:attribute>
+ <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="*" mode="textOnly">
+ <xsl:apply-templates select="* | text()" mode="textOnly" />
+ </xsl:template>
+
+ <xsl:template match="text()" mode="textOnly">
+ <xsl:value-of select="."/>
+ </xsl:template>
<!-- Useful in case of 'style:map', conditional formatting, where a style references to another -->
- <xsl:key name="textNotes" match="text:note" use="@text:note-class"/>
+ <xsl:key name="textNotes" match="text:note" use="@text:note-class"/>
<!-- writing the footer- and endnotes beyond the body -->
- <xsl:template name="write-text-nodes">
- <xsl:param name="globalData"/>
+ <xsl:template name="write-text-nodes">
+ <xsl:param name="globalData"/>
<!-- write footnote body -->
- <xsl:for-each select="key('textNotes', 'footnote')">
- <xsl:call-template name="write-text-node">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
- </xsl:call-template>
- </xsl:for-each>
+ <xsl:for-each select="key('textNotes', 'footnote')">
+ <xsl:call-template name="write-text-node">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
+ </xsl:call-template>
+ </xsl:for-each>
<!-- write endnote body -->
- <xsl:for-each select="key('textNotes', 'endnote')">
- <xsl:call-template name="write-text-node">
-
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="write-text-node">
- <xsl:param name="globalData"/>
- <xsl:param name="footnoteConfig"/>
-
- <xsl:apply-templates select="text:note-body/*[1]">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix">
- <xsl:element name="span">
- <xsl:attribute name="class">footnodeNumber</xsl:attribute>
- <xsl:element name="a">
- <xsl:attribute name="class">
- <xsl:value-of select="$footnoteConfig/@text:citation-style-name"/>
- </xsl:attribute>
- <xsl:attribute name="id">
- <xsl:value-of select="@text:id"/>
- </xsl:attribute>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#body_', @text:id)"/>
- </xsl:attribute>
- <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
- </xsl:element>
- </xsl:element>
- </xsl:with-param>
- </xsl:apply-templates>
- <xsl:apply-templates select="text:note-body/*[position()&gt;1]">
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- DISABLING this tab handling as the tab width is only relative
- <xsl:template match="text:tab">
- <xsl:param name="globalData"/>
-
- <xsl:variable name="tabNo">
- <xsl:choose>
- <xsl:when test="preceding-sibling::text:line-break">
- <xsl:call-template name="countTextTab"/>
- </xsl:when>
- <xsl:when test="preceding-sibling::text:tab">
- <xsl:value-of select="count(preceding-sibling::text:tab)"/>
- </xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:element name="span">
- <xsl:attribute name="style">margin-left:<xsl:value-of select="$globalData/all-doc-styles/style[@style:name = current()/parent::*/@text:style-name]/*/style:tab-stops/style:tab-stop[$tabNo]/@style:position"/>;</xsl:attribute>
+ <xsl:for-each select="key('textNotes', 'endnote')">
+ <xsl:call-template name="write-text-node">
+
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="write-text-node">
+ <xsl:param name="globalData"/>
+ <xsl:param name="footnoteConfig"/>
+
+ <xsl:apply-templates select="text:note-body/*[1]">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix">
+ <xsl:element name="span">
+ <xsl:attribute name="class">footnodeNumber</xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$footnoteConfig/@text:citation-style-name"/>
+ </xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:value-of select="@text:id"/>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#body_', @text:id)"/>
+ </xsl:attribute>
+ <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="text:note-body/*[position()&gt;1]">
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- DISABLING this tab handling as the tab width is only relative
+ <xsl:template match="text:tab">
+ <xsl:param name="globalData"/>
+
+ <xsl:variable name="tabNo">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::text:line-break">
+ <xsl:call-template name="countTextTab"/>
+ </xsl:when>
+ <xsl:when test="preceding-sibling::text:tab">
+ <xsl:value-of select="count(preceding-sibling::text:tab)"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="span">
+ <xsl:attribute name="style">margin-left:<xsl:value-of select="$globalData/all-doc-styles/style[@style:name = current()/parent::*/@text:style-name]/*/style:tab-stops/style:tab-stop[$tabNo]/@style:position"/>;</xsl:attribute>
</xsl:element>
- </xsl:template>
-
- <xsl:template name="countTextTab">
- <xsl:param name="tabCount" select="1"/>
- <xsl:param name="context" select="."/>
-
- <xsl:choose>
- <xsl:when test="preceding-sibling::*[1]">
- <xsl:for-each select="preceding-sibling::*[1]">
- <xsl:call-template name="countTextTab">
- <xsl:with-param name="tabCout">
- <xsl:choose>
- <xsl:when test="name(.) = 'text:tab'">
- <xsl:value-of select="$tabCount + 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabCount"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="context" select="preceding-sibling::*[1]" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabCount"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
+ </xsl:template>
+
+ <xsl:template name="countTextTab">
+ <xsl:param name="tabCount" select="1"/>
+ <xsl:param name="context" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*[1]">
+ <xsl:for-each select="preceding-sibling::*[1]">
+ <xsl:call-template name="countTextTab">
+ <xsl:with-param name="tabCout">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'text:tab'">
+ <xsl:value-of select="$tabCount + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabCount"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="context" select="preceding-sibling::*[1]" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabCount"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
-->
<!-- MathML -->
- <xsl:template match="draw:object[math:math]">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
- <xsl:apply-templates select="math:math/math:semantics/*" mode="math"/>
- </math>
- </xsl:template>
-
- <xsl:template match="*" mode="math">
- <xsl:element name="{local-name()}" namespace="http://www.w3.org/1998/Math/MathML">
- <xsl:apply-templates select="@*|node()" mode="math"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="@*" mode="math">
- <xsl:attribute name="{local-name()}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:template>
-
- <xsl:template match="math:annotation" mode="math"/>
-
-
+ <xsl:template match="draw:object[math:math]">
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates select="math:math/math:semantics/*" mode="math"/>
+ </math>
+ </xsl:template>
+
+ <xsl:template match="*" mode="math">
+ <xsl:element name="{local-name()}" namespace="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates select="@*|node()" mode="math"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="@*" mode="math">
+ <xsl:attribute name="{local-name()}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:template>
+
+ <xsl:template match="math:annotation" mode="math"/>
+
</xsl:stylesheet> \ No newline at end of file
diff --git a/fondu/prj/build.lst b/fondu/prj/build.lst
deleted file mode 100644
index d99a2c230c02..000000000000
--- a/fondu/prj/build.lst
+++ /dev/null
@@ -1,2 +0,0 @@
-fd fondu : solenv NULL
-fd fondu nmake - u fd_fondu NULL
diff --git a/fondu/prj/d.lst b/fondu/prj/d.lst
deleted file mode 100644
index d68d83e80b74..000000000000
--- a/fondu/prj/d.lst
+++ /dev/null
@@ -1,2 +0,0 @@
-mkdir: %_DEST%\inc%_EXT%\fondu
-..\%__SRC%\bin\fondu %_DEST%\bin%_EXT%\fondu
diff --git a/framework/inc/classes/xmlnamespaces.hxx b/framework/inc/classes/xmlnamespaces.hxx
deleted file mode 100644
index 60a3de4b68ba..000000000000
--- a/framework/inc/classes/xmlnamespaces.hxx
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef __FRAMEWORK_CLASSES_XMLNAMESPACES_HXX_
-#define __FRAMEWORK_CLASSES_XMLNAMESPACES_HXX_
-
-#include <com/sun/star/xml/sax/SAXException.hpp>
-
-#include <map>
-
-namespace framework
-{
-
-class XMLNamespaces
-{
- public:
- XMLNamespaces();
- XMLNamespaces( const XMLNamespaces& );
- virtual ~XMLNamespaces();
-
- void addNamespace( const ::rtl::OUString& aName, const ::rtl::OUString& aValue )
- throw( ::com::sun::star::xml::sax::SAXException );
-
- ::rtl::OUString applyNSToAttributeName( const ::rtl::OUString& ) const
- throw( ::com::sun::star::xml::sax::SAXException );
- ::rtl::OUString applyNSToElementName( const ::rtl::OUString& ) const
- throw( ::com::sun::star::xml::sax::SAXException );
-
- private:
- typedef ::std::map< ::rtl::OUString, ::rtl::OUString > NamespaceMap;
-
- ::rtl::OUString getNamespaceValue( const ::rtl::OUString& aNamespace ) const
- throw( ::com::sun::star::xml::sax::SAXException );
-
- ::rtl::OUString m_aDefaultNamespace;
- NamespaceMap m_aNamespaceMap;
-};
-
-}
-
-#endif // __FRAMEWORK_XMLNAMESPACES_HXX_
diff --git a/framework/inc/framework.hrc b/framework/inc/framework.hrc
index e49192aa7c33..eea91edeaa07 100644
--- a/framework/inc/framework.hrc
+++ b/framework/inc/framework.hrc
@@ -51,19 +51,10 @@
#define STR_BACKING_CREATE 3
#define STR_BACKING_TEMPLATE 4
#define STR_BACKING_FILE 5
-#define BMP_BACKING_WRITER 6
-#define BMP_BACKING_CALC 7
-#define BMP_BACKING_IMPRESS 8
-#define BMP_BACKING_DRAW 9
-#define BMP_BACKING_DATABASE 10
-#define BMP_BACKING_FORMULA 11
-#define BMP_BACKING_OPENFILE 12
-#define BMP_BACKING_OPENTEMPLATE 13
-#define STR_BACKING_EXTHELP 15
-#define STR_BACKING_REGHELP 17
-#define STR_BACKING_INFOHELP 19
-#define STR_BACKING_TPLREP 21
-#define BMP_BACKING_FOLDER 22
+#define STR_BACKING_EXTHELP 6
+#define STR_BACKING_REGHELP 7
+#define STR_BACKING_INFOHELP 8
+#define STR_BACKING_TPLREP 9
#define RES_BACKING_IMAGES (DLG_BACKING+1)
#define RES_BACKING_IMAGES_HC (DLG_BACKING+2)
@@ -77,6 +68,14 @@
#define BMP_BACKING_REG 7
#define BMP_BACKING_INFO 8
#define BMP_BACKING_TPLREP 9
+#define BMP_BACKING_WRITER 10
+#define BMP_BACKING_CALC 11
+#define BMP_BACKING_IMPRESS 12
+#define BMP_BACKING_DRAW 13
+#define BMP_BACKING_DATABASE 14
+#define BMP_BACKING_FORMULA 15
+#define BMP_BACKING_OPENFILE 16
+#define BMP_BACKING_OPENTEMPLATE 17
// Ids of TabWindow
#define WIN_TABWINDOW (RID_FWK_DIALOG_START+101)
diff --git a/framework/inc/xml/toolboxlayoutdocumenthandler.hxx b/framework/inc/xml/toolboxlayoutdocumenthandler.hxx
deleted file mode 100644
index 71a7843a0a9e..000000000000
--- a/framework/inc/xml/toolboxlayoutdocumenthandler.hxx
+++ /dev/null
@@ -1,59 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef __FRAMEWORK_XML_TOOLBOXLAYOUTDOCUMENTHANDLER_HXX_
-#define __FRAMEWORK_XML_TOOLBOXLAYOUTDOCUMENTHANDLER_HXX_
-
-#include <xml/toolboxconfiguration.hxx>
-
-//_________________________________________________________________________________________________________________
-// interface includes
-//_________________________________________________________________________________________________________________
-
-#ifndef __COM_SUN_STAR_XML_SAX_XDOCUMENTHANDLER_HPP_
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
-#endif
-
-//_________________________________________________________________________________________________________________
-// other includes
-//_________________________________________________________________________________________________________________
-#include <threadhelp/threadhelpbase.hxx>
-#include <rtl/ustring.hxx>
-#include <cppuhelper/weak.hxx>
-
-#include <hash_map>
-#include <stdtypes.h>
-
-//_________________________________________________________________________________________________________________
-// namespace
-//_________________________________________________________________________________________________________________
-
-namespace framework{
-
-} // namespace framework
-
-#endif
diff --git a/framework/source/services/backingwindow.cxx b/framework/source/services/backingwindow.cxx
index 21c62fd89a54..e4d37d1fe059 100644
--- a/framework/source/services/backingwindow.cxx
+++ b/framework/source/services/backingwindow.cxx
@@ -133,7 +133,8 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
mbInitControls( false ),
mnLayoutStyle( 0 ),
mpAccExec( NULL ),
- mnBtnPos( 120 )
+ mnBtnPos( 120 ),
+ mnBtnTop( 150 )
{
mnColumnWidth[0] = mnColumnWidth[1] = 0;
mnTextColumnWidth[0] = mnTextColumnWidth[1] = 0;
@@ -163,16 +164,6 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
{
}
- // get icon images from vcl resource and set them on the appropriate buttons
- loadImage( FwkResId( BMP_BACKING_WRITER ), maWriterButton );
- loadImage( FwkResId( BMP_BACKING_CALC ), maCalcButton );
- loadImage( FwkResId( BMP_BACKING_IMPRESS ), maImpressButton );
- loadImage( FwkResId( BMP_BACKING_DRAW ), maDrawButton );
- loadImage( FwkResId( BMP_BACKING_DATABASE ), maDBButton );
- loadImage( FwkResId( BMP_BACKING_FORMULA ), maMathButton );
- loadImage( FwkResId( BMP_BACKING_FOLDER ), maOpenButton );
- loadImage( FwkResId( BMP_BACKING_FOLDER ), maTemplateButton );
-
String aExtHelpText( FwkResId( STR_BACKING_EXTHELP ) );
String aRegHelpText( FwkResId( STR_BACKING_REGHELP ) );
String aInfoHelpText( FwkResId( STR_BACKING_INFOHELP ) );
@@ -187,10 +178,6 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
SetStyle( GetStyle() | WB_DIALOGCONTROL );
- // add some breathing space for the images
- maButtonImageSize.Width() += 12;
- maButtonImageSize.Height() += 12;
-
// force tab cycling in toolbox
maToolbox.SetStyle( maToolbox.GetStyle() | WB_FORCETABCYCLE );
@@ -236,6 +223,11 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
// init background
initBackground();
+
+ // add some breathing space for the images
+ maButtonImageSize.Width() += 12;
+ maButtonImageSize.Height() += 12;
+
}
@@ -324,6 +316,17 @@ void BackingWindow::initBackground()
else
mnBtnPos = maBackgroundLeft.GetSizePixel().Width() + 40;
}
+
+ // get icon images from fwk resource and set them on the appropriate buttons
+ loadImage( FwkResId( BMP_BACKING_WRITER ), maWriterButton );
+ loadImage( FwkResId( BMP_BACKING_CALC ), maCalcButton );
+ loadImage( FwkResId( BMP_BACKING_IMPRESS ), maImpressButton );
+ loadImage( FwkResId( BMP_BACKING_DRAW ), maDrawButton );
+ loadImage( FwkResId( BMP_BACKING_DATABASE ), maDBButton );
+ loadImage( FwkResId( BMP_BACKING_FORMULA ), maMathButton );
+ loadImage( FwkResId( BMP_BACKING_OPENFILE ), maOpenButton );
+ loadImage( FwkResId( BMP_BACKING_OPENTEMPLATE ), maTemplateButton );
+
}
void BackingWindow::initControls()
@@ -550,7 +553,7 @@ void BackingWindow::layoutButton(
long nTextWidth = i_rBtn.GetTextWidth( i_rBtn.GetText() );
- nTextWidth += maButtonImageSize.Width();
+ nTextWidth += maButtonImageSize.Width() + 8; // add some fuzz to be on the safe side
if( nColumn >= 0 && nColumn < static_cast<int>(sizeof(mnColumnWidth)/sizeof(mnColumnWidth[0])) )
{
if( nTextWidth > mnColumnWidth[nColumn] )
@@ -733,6 +736,9 @@ void BackingWindow::Resize()
nYPos += nWDelta/2 - nDiff;
+ if( mnLayoutStyle != 1 )
+ nYPos = maControlRect.Top() + mnBtnTop;
+
maWriterButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ), Size( mnTextColumnWidth[0], maButtonImageSize.Height() ) );
maDrawButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos + mnColumnWidth[0], nYPos ), Size( mnTextColumnWidth[1], maButtonImageSize.Height() ) );
nYPos += nBDelta - nDiff;
diff --git a/framework/source/services/backingwindow.hxx b/framework/source/services/backingwindow.hxx
index 76a12a48b816..c4d4c9b0b76b 100644
--- a/framework/source/services/backingwindow.hxx
+++ b/framework/source/services/backingwindow.hxx
@@ -121,6 +121,7 @@ namespace framework
sal_Int32 mnLayoutStyle;
svt::AcceleratorExecute* mpAccExec;
long mnBtnPos;
+ long mnBtnTop;
static const int nItemId_Extensions = 1;
static const int nItemId_Reg = 2;
diff --git a/framework/source/services/fwk_services.src b/framework/source/services/fwk_services.src
index 7e2ee3253e71..7ad8b4c3cede 100644
--- a/framework/source/services/fwk_services.src
+++ b/framework/source/services/fwk_services.src
@@ -53,34 +53,6 @@ Window DLG_BACKING
{
Text [ en-US ] = "~Open a document...";
};
- Bitmap BMP_BACKING_WRITER
- {
- File = "odt_32.png";
- };
- Bitmap BMP_BACKING_CALC
- {
- File = "ods_32.png";
- };
- Bitmap BMP_BACKING_IMPRESS
- {
- File = "odp_32.png";
- };
- Bitmap BMP_BACKING_DRAW
- {
- File = "odg_32.png";
- };
- Bitmap BMP_BACKING_DATABASE
- {
- File = "odb_32.png";
- };
- Bitmap BMP_BACKING_FORMULA
- {
- File = "odf_32.png";
- };
- Bitmap BMP_BACKING_FOLDER
- {
- File = "folder_32.png";
- };
String STR_BACKING_EXTHELP
{
Text [ en-US ] = "Add new features to %PRODUCTNAME";
@@ -137,6 +109,38 @@ Resource RES_BACKING_IMAGES
{
File = "addtemplate_32.png";
};
+ Bitmap BMP_BACKING_WRITER
+ {
+ File = "odt_32.png";
+ };
+ Bitmap BMP_BACKING_CALC
+ {
+ File = "ods_32.png";
+ };
+ Bitmap BMP_BACKING_IMPRESS
+ {
+ File = "odp_32.png";
+ };
+ Bitmap BMP_BACKING_DRAW
+ {
+ File = "odg_32.png";
+ };
+ Bitmap BMP_BACKING_DATABASE
+ {
+ File = "odb_32.png";
+ };
+ Bitmap BMP_BACKING_FORMULA
+ {
+ File = "odf_32.png";
+ };
+ Bitmap BMP_BACKING_OPENFILE
+ {
+ File = "folder_32.png";
+ };
+ Bitmap BMP_BACKING_OPENTEMPLATE
+ {
+ File = "templates_32.png";
+ };
};
Resource RES_BACKING_IMAGES_HC
@@ -177,6 +181,38 @@ Resource RES_BACKING_IMAGES_HC
{
File = "template_hc.png";
};
+ Bitmap BMP_BACKING_WRITER
+ {
+ File = "odt_32_hc.png";
+ };
+ Bitmap BMP_BACKING_CALC
+ {
+ File = "ods_32_hc.png";
+ };
+ Bitmap BMP_BACKING_IMPRESS
+ {
+ File = "odp_32_hc.png";
+ };
+ Bitmap BMP_BACKING_DRAW
+ {
+ File = "odg_32_hc.png";
+ };
+ Bitmap BMP_BACKING_DATABASE
+ {
+ File = "odb_32_hc.png";
+ };
+ Bitmap BMP_BACKING_FORMULA
+ {
+ File = "odf_32_hc.png";
+ };
+ Bitmap BMP_BACKING_OPENFILE
+ {
+ File = "folder_32_hc.png";
+ };
+ Bitmap BMP_BACKING_OPENTEMPLATE
+ {
+ File = "templates_32_hc.png";
+ };
};
Window WIN_TABWINDOW
diff --git a/framework/source/uielement/rootitemcontainer.cxx b/framework/source/uielement/rootitemcontainer.cxx
index e67b734730e5..8c81f31f2394 100644
--- a/framework/source/uielement/rootitemcontainer.cxx
+++ b/framework/source/uielement/rootitemcontainer.cxx
@@ -127,7 +127,6 @@ RootItemContainer::RootItemContainer( const Reference< XIndexAccess >& rSourceCo
Reference< XPropertySet > xPropSet( rSourceContainer, UNO_QUERY );
if ( xPropSet.is() )
{
- rtl::OUString aUIName;
xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UIName" ))) >>= m_aUIName;
}
}
diff --git a/framework/source/xml/makefile.mk b/framework/source/xml/makefile.mk
index dd40af0cbe05..a4f18a555ab3 100644
--- a/framework/source/xml/makefile.mk
+++ b/framework/source/xml/makefile.mk
@@ -47,7 +47,6 @@ SLOFILES= \
$(SLO)$/statusbardocumenthandler.obj \
$(SLO)$/toolboxconfiguration.obj \
$(SLO)$/toolboxdocumenthandler.obj \
- $(SLO)$/toolboxlayoutdocumenthandler.obj \
$(SLO)$/saxnamespacefilter.obj \
$(SLO)$/xmlnamespaces.obj \
$(SLO)$/acceleratorconfigurationreader.obj \
diff --git a/framework/source/xml/toolboxconfiguration.cxx b/framework/source/xml/toolboxconfiguration.cxx
index 9cd1f25c3df5..9d1c91aa6849 100644
--- a/framework/source/xml/toolboxconfiguration.cxx
+++ b/framework/source/xml/toolboxconfiguration.cxx
@@ -30,7 +30,6 @@
#include "precompiled_framework.hxx"
#include <xml/toolboxconfiguration.hxx>
#include <xml/toolboxdocumenthandler.hxx>
-#include <xml/toolboxlayoutdocumenthandler.hxx>
#include <xml/saxnamespacefilter.hxx>
#include <services.h>
diff --git a/framework/source/xml/toolboxlayoutdocumenthandler.cxx b/framework/source/xml/toolboxlayoutdocumenthandler.cxx
deleted file mode 100644
index 645750dc3f51..000000000000
--- a/framework/source/xml/toolboxlayoutdocumenthandler.cxx
+++ /dev/null
@@ -1,58 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_framework.hxx"
-
-#include <stdio.h>
-
-//_________________________________________________________________________________________________________________
-// my own includes
-//_________________________________________________________________________________________________________________
-
-#include <threadhelp/resetableguard.hxx>
-#include <xml/toolboxlayoutdocumenthandler.hxx>
-#include <macros/debug.hxx>
-#include <xml/toolboxconfigurationdefines.hxx>
-
-//_________________________________________________________________________________________________________________
-// interface includes
-//_________________________________________________________________________________________________________________
-
-#ifndef __COM_SUN_STAR_XML_SAX_XEXTENDEDDOCUMENTHANDLER_HPP_
-#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
-#endif
-
-//_________________________________________________________________________________________________________________
-// other includes
-//_________________________________________________________________________________________________________________
-#include <vcl/svapp.hxx>
-#include <vcl/toolbox.hxx>
-
-//_________________________________________________________________________________________________________________
-// namespace
-//_________________________________________________________________________________________________________________
diff --git a/framework/util/makefile.mk b/framework/util/makefile.mk
index 65edaff42d35..b1b7c691d29f 100644
--- a/framework/util/makefile.mk
+++ b/framework/util/makefile.mk
@@ -79,7 +79,6 @@ LIB2OBJFILES= \
$(SLO)$/statusbardocumenthandler.obj \
$(SLO)$/toolboxconfiguration.obj \
$(SLO)$/toolboxdocumenthandler.obj \
- $(SLO)$/toolboxlayoutdocumenthandler.obj \
$(SLO)$/imagesconfiguration.obj \
$(SLO)$/imagesdocumenthandler.obj \
$(SLO)$/xmlnamespaces.obj \
diff --git a/i18npool/source/isolang/isolang.cxx b/i18npool/source/isolang/isolang.cxx
index 28c86d39673e..9d80bf7050e6 100644
--- a/i18npool/source/isolang/isolang.cxx
+++ b/i18npool/source/isolang/isolang.cxx
@@ -287,7 +287,8 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{ LANGUAGE_BELARUSIAN, "be", "BY" },
{ LANGUAGE_CATALAN, "ca", "ES" }, // Spain (default)
{ LANGUAGE_CATALAN, "ca", "AD" }, // Andorra
- { LANGUAGE_USER_CATALAN_VALENCIAN, "ca", "XV" }, // XV: ISO 3166 user-assigned; workaround for UI localization only, do not use in document content!
+ { LANGUAGE_USER_CATALAN_VALENCIAN, "ca", "XV" }, // XV: ISO 3166 user-assigned; old workaround for UI localization only, do not use in document content! Kept just in case..
+ { LANGUAGE_USER_CATALAN_VALENCIAN, "qcv", "ES" }, // qcv: ISO 639-3 reserved-for-local-use; for UI localization, use in document content on own risk!
{ LANGUAGE_FRENCH_CAMEROON, "fr", "CM" },
{ LANGUAGE_FRENCH_COTE_D_IVOIRE, "fr", "CI" },
{ LANGUAGE_FRENCH_HAITI, "fr", "HT" },
diff --git a/idlc/source/preproc/cpp.h b/idlc/source/preproc/cpp.h
index 24d30222b5a1..4b8645b2d34e 100644
--- a/idlc/source/preproc/cpp.h
+++ b/idlc/source/preproc/cpp.h
@@ -40,11 +40,8 @@
#define NULL 0
#endif
-#ifndef __alpha
typedef unsigned char uchar;
-#endif
-
enum toktype
{
END, UNCLASS, NAME, NUMBER, STRING, CCON, NL, WS, DSHARP,
diff --git a/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmp
new file mode 100644
index 000000000000..9b367631b65c
--- /dev/null
+++ b/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Banner.bmp
Binary files differ
diff --git a/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmp b/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmp
new file mode 100644
index 000000000000..8b160e68ec8c
--- /dev/null
+++ b/instsetoo_native/inc_broffice/windows/msi_templates/Binary/Image.bmp
Binary files differ
diff --git a/instsetoo_native/macosx/application/PostInstall.applescript b/instsetoo_native/macosx/application/PostInstall.applescript
deleted file mode 100644
index 3c302ab2daad..000000000000
--- a/instsetoo_native/macosx/application/PostInstall.applescript
+++ /dev/null
@@ -1,290 +0,0 @@
-(*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- *************************************************************************)
-
--- This is the PostInstall -script for .pkg installation
---
--- Currently this script does the following things:
--- 1) Uses fondu to extract and convert .dfont -fonts from Mac OS X system to .ttf -fonts for OpenOffice.org
-
-
-(*==== (global variables as get-functions) ====*)
-
-on getOOInstallPath()
- return (((path to me) as string) & "Contents:")
-end getOOInstallPath
-
-on getOOResourcesPath()
- return (((path to me) as string) & "Contents:Resources:")
-end getOOResourcesPath
-
-on getOOProgramPath()
- return (getOOInstallPath() & "MacOS:")
-end getOOProgramPath
-
--- OSXSystemFontPathList : {"/System/Library/Fonts/", "/Library/Fonts/"}
--- OSXUserFontPathList : {"~/Library/Fonts/"}
-
-on getOSXSystemFontPathList()
- return {(path to fonts folder from system domain) as string, Â
- (path to fonts folder from local domain) as string}
-end getOSXSystemFontPathList
-
-on getOSXUserFontPathList()
- return {(path to fonts folder from user domain) as string}
-end getOSXUserFontPathList
-
-on getOOSystemFontPath()
- return (getOOInstallPath() & "share:fonts:truetype:")
-end getOOSystemFontPath
-
-on getOOUserSettingsPath()
- return (((path to home folder) as string) & "Library:Application Support:OpenOffice.org:%USERDIRPRODUCTVERSION:")
-end getOOUserSettingsPath
-
-on getOOUserFontPath()
- return (getOOUserSettingsPath() & "user:fonts:")
-end getOOUserFontPath
-
-
-on getOOCookieSystemFondu()
- -- nosystemfondu : file does exist if user does not want to use fondu for system fonts
- return "no_system_fondu"
-end getOOCookieSystemFondu
-
-on getOOCookieSystemFonduDone()
- -- systemfondudone : file does exist if native fonts already extracted from system fonts
- return "system_fondu_done"
-end getOOCookieSystemFonduDone
-
-on getOOCookieUserFondu()
- -- nouserfondu : file does exist if user does not want to use fondu for user fonts
- return "no_user_fondu"
-end getOOCookieUserFondu
-
-on getOOCookieUserFonduDone()
- -- userfondudone : file does exist if native fonts already extracted from user fonts
- return "user_fondu_done"
-end getOOCookieUserFonduDone
-
---
--- the default handler: run
---
-
-on run
- -- Check for that OOo can be found
- if (not isRealPath(getOOProgramPath())) then
- logEvent("(scripts/PostInstall) ERROR: could not find OOo installation from " & POSIX path of getOOProgramPath())
- return
- end if
-
- -- checks are ok, now we can start doing the real stuff
- firstLaunch()
- runSystemFondu()
- runUserFondu()
-
- return
-end run
-
-
--------------------------------------------------------------
-
-
-on runSystemFondu()
- -- check if user does not want font conversion
- if (isRealPath(getOOSystemFontPath() & getOOCookieSystemFondu())) then
- return
- end if
-
- -- check if font conversion was already run
- if (isRealPath(getOOSystemFontPath() & getOOCookieSystemFonduDone())) then
- return
- end if
-
- logEvent("(scripts/PostInstall) Extracting system fonts...")
- -- else try to create footprint
- if (setCookie(getOOSystemFontPath(), getOOCookieSystemFonduDone())) then
- -- call fondu for each font (i.e. without wildcard), so if it crashes only one font is missing
- fonduConvertFonts(getOOSystemFontPath(), getOSXSystemFontPathList())
- end if
- logEvent("(scripts/PostInstall) Extracting system fonts completed.")
-end runSystemFondu
-
-
-on runUserFondu()
- -- check if user does not want font conversion
- if (isRealPath(getOOUserFontPath() & getOOCookieUserFondu())) then
- return
- end if
-
- -- check if font conversion was already run
- if (isRealPath(getOOUserFontPath() & getOOCookieUserFonduDone())) then
- return
- end if
-
- logEvent("(scripts/PostInstall) Extracting user fonts...")
- -- try to create footprint
- if (setCookie(getOOUserFontPath(), getOOCookieUserFonduDone())) then
- -- call fondu for each font (i.e. without wildcard), so if it crashes only one font is missing
- fonduConvertFonts(getOOUserFontPath(), getOSXUserFontPathList())
- end if
- logEvent("(scripts/PostInstall) Extracting user fonts completed.")
-end runUserFondu
-
-
-on firstLaunch()
- -- continue only if OOSysFontdir exists
- if (not isRealPath(getOOSystemFontPath())) then
- logEvent("(scripts/PostInstall) ERROR: could not find System font folder from " & POSIX path of getOOSystemFontPath())
- return
- end if
-
- if (setCookie(getOOSystemFontPath(), getOOCookieSystemFondu() & ".in_progress")) then
- -- Has user already decided that he does not want to extract system fonts ?
- if (not isRealPath(getOOSystemFontPath() & getOOCookieSystemFondu())) then
- -- Are system fonts already extracted ?
- if (not isRealPath(getOOSystemFontPath() & getOOCookieSystemFonduDone())) then
- -- ask if the user wants to use fondu to extract system fonts
- set yesKey to getMessage("YES_KEY")
- set noKey to getMessage("NO_KEY")
- display dialog getMessage("OOO_EXTRACT_NATIVE_SYSFONTS") buttons {noKey, yesKey} default button yesKey
- set theResult to the button returned of the result
- if theResult is noKey then
- -- not use fondu for system fonts extraction !
- setCookie(getOOSystemFontPath(), getOOCookieSystemFondu())
- logEvent("(scripts/PostInstall) Setting: no system fonts")
- end if
- end if
- end if
- end if
-
- -- continue only if OOUserFontdir exists
- if (not isRealPath(getOOUserFontPath())) then
- logEvent("(scripts/PostInstall) ERROR: could not find User font folder from " & POSIX path of getOOUserFontPath())
- return
- end if
-
- -- Has user already decided that he does not want to extract user fonts ?
- if (not isRealPath(getOOUserFontPath() & getOOCookieUserFondu())) then
- -- Are system fonts already extracted ?
- if (not isRealPath(getOOUserFontPath() & getOOCookieUserFonduDone())) then
- -- ask if the user wants to use fondu to extract user fonts
- set yesKey to getMessage("YES_KEY")
- set noKey to getMessage("NO_KEY")
- display dialog getMessage("OOO_EXTRACT_NATIVE_USERFONTS") buttons {noKey, yesKey} default button yesKey
- set theResult to the button returned of the result
- if theResult is noKey then
- -- not use fondu for user fonts extraction !
- setCookie(getOOUserFontPath(), getOOCookieUserFondu())
- logEvent("(scripts/PostInstall) Setting: no user fonts")
- end if
- end if
- end if
-
-end firstLaunch
-
-
-on fonduConvertFonts(targetPath, sourcePathList)
-
- -- define the location of fondu
- set fondu to quoted form of (POSIX path of getOOProgramPath() & "fondu")
-
- -- first go to the target directory
- set fonduCmd to "cd " & (quoted form of POSIX path of targetPath) & "; "
-
- repeat with q from 1 to number of items in sourcePathList
- set aPath to POSIX path of (item q of sourcePathList)
- set fonduCmd to fonduCmd & "for i in " & aPath & "*; do " & fondu & " -force \"$i\" >> /dev/null 2>&1; done; "
- end repeat
- try
- -- ignore errors
- -- with admin privileges does not work well on panther
- do shell script "sh -c " & quoted form of fonduCmd
- end try
- logEvent("fonduCMD: " & fonduCmd)
-
-end fonduConvertFonts
-
-
-(* ===== (Helper functions) ======= *)
-
--- set a cookiefile. The content is empty.
-on setCookie(aPath, cookieFile)
- try
- if (isRealPath(aPath)) then
- set newFile to (aPath & cookieFile)
- open for access file newFile
- close access file newFile
- return true
- else
- return false
- end if
- on error
- return false
- end try
-end setCookie
-
--- get a localized string
-on getMessage(aKey)
- try
- if (aKey is equal to "YES_KEY") then
- return "Yes"
- end if
-
- if (aKey is equal to "NO_KEY") then
- return "No"
- end if
-
- if (aKey is equal to "OOO_EXTRACT_NATIVE_SYSFONTS") then
- return "Do you want OpenOffice.org to use the Apple system fonts?"
- end if
-
- if (aKey is equal to "OOO_EXTRACT_NATIVE_USERFONTS") then
- return "Do you want OpenOffice.org to use the fonts you have installed on this system?"
- end if
- end try
-end getMessage
-
--- function for checking if a path exists
-on isRealPath(aPath)
- try
- alias aPath
- return true
- on error
- -- error number -43 from aPath
- -- display dialog "NotRP -- " & aPath
- return false
- end try
-end isRealPath
-
--- function for logging script messages
-on logEvent(themessage)
- set theLine to (do shell script Â
- "date +'%Y-%m-%d %H:%M:%S'" as string) Â
- & " " & themessage
- do shell script "echo " & quoted form of theLine & Â
- " >> ~/Library/Logs/OpenOffice%USERDIRPRODUCTVERSION.log"
-end logEvent
diff --git a/instsetoo_native/macosx/application/main.applescript b/instsetoo_native/macosx/application/main.applescript
deleted file mode 100644
index c5c100004ac8..000000000000
--- a/instsetoo_native/macosx/application/main.applescript
+++ /dev/null
@@ -1,363 +0,0 @@
-(*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- *************************************************************************)
-
-(*==== (global variables as get-functions) ====*)
-
-on getOOInstallPath()
- return (((path to me) as string) & "Contents:")
-end getOOInstallPath
-
-on getOOResourcesPath()
- return (((path to me) as string) & "Contents:Resources:")
-end getOOResourcesPath
-
-on getOOProgramPath()
- return (getOOInstallPath() & "MacOS:")
-end getOOProgramPath
-
-on getScriptPath()
- -- set this to absolute path when debugging
- return (((path to me) as string) & "Contents:Resources:Scripts:")
-end getScriptPath
-
-on getOOUserSettingsPath()
- return (((path to home folder) as string) & "Library:Application Support:OpenOffice.org:%USERDIRPRODUCTVERSION:")
-end getOOUserSettingsPath
-
-on getOOUserFontPath()
- return (getOOUserSettingsPath() & "user:fonts:")
-end getOOUserFontPath
-
-on getUserLogsPath()
- return (((path to home folder) as string) & "Library:Logs:")
-end getUserLogsPath
-
-on shellTerminator()
- return (" &>/dev/null & echo $!") as string
-end shellTerminator
-
---
--- the default handlers: run, open, idle, quit
---
-
-on run
- if (preRun()) then
- logEvent("(Scripts/main) Running OpenOffice.org")
- openSoffice("-")
- end if
-end run
-
-on open (theFiles)
- if (preRun()) then
- openFiles(theFiles)
- end if
-end open
-
-on idle
- -- close icon only if ooo has terminated
- if (hasOOoQuit()) then
- tell me to quit
- end if
- -- check all x seconds if ok to quit
- return 3
-end idle
-
-on quit
- if (hasOOoQuit()) then
- continue quit
- end if
-end quit
-
--------------------------------------------------------------
-
-on preRun()
-
-
- -- Check for the required version of Mac OS X
- if (not atLeastOSXVersion(10, 3, 0)) then
- display dialog getMessage("ERROR_NEED_PANTHER")
- return false
- end if
-
- -- Check for that OOo can be found
- if (not isRealPath(getOOProgramPath())) then
- display dialog getMessage("ERROR_OOO_NOT_FOUND")
- return false
- end if
-
- if (not isRealPath(getOOUserFontPath())) then
- set createUserFont to "mkdir -p " & (quoted form of POSIX path of getOOUserFontPath()) & "; "
- do shell script createUserFont
- end if
-
- -- If no crash occured before, ~/Library/Logs does not exist, and OpenOffice.org cannot be started
- if (not isRealPath(getUserLogsPath())) then
- set createUserLogsPath to "mkdir -p " & (quoted form of POSIX path of getUserLogsPath()) & "; "
- do shell script createUserLogsPath
- end if
-
- -- Checks are ok, now do the PostInstall stuff (e.g. fondu)
-
- -- load helper library
- set postinstall to load script alias Â
- (getScriptPath() & "PostInstall.scpt")
- -- execute the postinstall script
- run of postinstall
-
-
- return true
-end preRun
-
-
-on hasOOoQuit()
- if (isRealPath(getOOProgramPath())) then
- -- set the location of soffice binary
- set soffice to (quoted form of (POSIX path of getOOProgramPath() & "soffice"))
-
- set isRunning to do shell script "_FOUND_=`ps -wx -o command | grep " & soffice & " | grep -v grep`; echo $_FOUND_"
- if isRunning ­ "" then
- return false
- else
- return true
- end if
- else
- return true
- end if
-end hasOOoQuit
-
-
-on openSoffice(aFile)
- set theDisplay to startXServer()
- if (theDisplay is equal to "error") then
- return
- end if
- set theEnv to "DISPLAY=" & theDisplay & " ; export DISPLAY; "
- set theCmd to "sh " & (quoted form of (POSIX path of getOOProgramPath() & "soffice")) & " "
- do shell script theEnv & theCmd & aFile & shellTerminator()
- -- logEvent("open CMD: " & theEnv & theCmd & aFile)
-end openSoffice
-
-
--- helper function to start X11 server
-on startXServer()
-
- -- get X settings
- set XSettingsList to findXServer()
- set whichserver to item 1 of XSettingsList
- set Xserverloc to item 2 of XSettingsList
-
- -- debug:
- -- logEvent("(scripts/main) X settings: " & whichserver & "--" & POSIX path of Xserverloc)
- -- set whichserver to "NOXSERVER"
-
- -- if nothing really was found, display an error message.
- if (whichserver is equal to "NOXSERVER") then
-
- display dialog getMessage("ERROR_NEED_X11") buttons {"Quit", "More Info"} default button "More Info"
- if the button returned of the result is "Quit" then
- quit
- else
- -- if more info is chosen, then open a help web page
- do shell script "open http://porting.openoffice.org/mac/faq/installing/X11.html"
- -- cannot continue, so quit the script
- return "error"
- end if
-
- end if
-
- set now_running to ""
- set now_running to do shell script "INX=`ps -wcx | grep " & quoted form of (whichserver & "$") & "`; echo $INX"
- if whichserver = "NOXSERVER" then
- -- display dialog "No XServer Found"
- set now_running to "Skip"
- end if
- if now_running = "" then
- if whichserver = "X11" then
- set x11cmd to quoted form of (Xserverloc & "/Contents/MacOS/X11") & shellTerminator()
- do shell script x11cmd
- -- save process id
- set x11pid to the result
- -- wait until the window manager is started which is the second child process of x11
- set numchildrencmd to "ps -x -o ppid | grep " & x11pid & " | wc -l"
- set numchildren to 0
- set d to current date
- set t1 to time of d
- repeat while numchildren ­ 2
- set d to current date
- set t2 to time of d
- -- give up after 30 seconds
- if t2 - t1 > 30 then
- display dialog "Command timed out"
- exit repeat
- end if
- set result to do shell script numchildrencmd
- set numchildren to result as integer
- end repeat
- else -- startup XDarwin
- do shell script "open " & quoted form of Xserverloc & shellTerminator()
- do shell script "sleep 4"
- end if
- end if
- if whichserver is equal to "X11" then
- -- the DISPLAY variable is different for every user currently logged in
- -- X11 passes the DISPLAY as the last command line parameter to its child process
- -- we can use ps to read the command line and parse the trailing :0, :1, or whatever
- set xdisplay to do shell script "ps -wx -o command | grep X11.app | grep \":.$\" | sed \"s/^.*:/:/g\""
- --display dialog xdisplay
- return xdisplay
- else
- -- TODO: find out how XDarwin does it
- return ":0"
- end if
-end startXServer
-
-
-on openFiles(fileList)
- if (count of fileList) > 0 then
- repeat with i from 1 to the count of fileList
- set theDocument to (item i of fileList)
- set theFilePath to (quoted form of POSIX path of theDocument)
- set theFileInfo to (info for theDocument)
- openSoffice(theFilePath)
- logEvent("(Scripts/main) Open file: " & theFilePath)
- end repeat
- end if
-end openFiles
-
-
-(* ===== (Helper functions) ======= *)
-
--- get a localized string
-on getMessage(aKey)
- try
- if (aKey is equal to "YES_KEY") then
- return "Yes"
- end if
-
- if (aKey is equal to "NO_KEY") then
- return "No"
- end if
-
- if (aKey is equal to "ERROR_OOO_NOT_FOUND") then
- return "OpenOffice.org was not found on your system. Please (re-)install OpenOffice.org first."
- end if
-
- if (aKey is equal to "ERROR_NEED_PANTHER") then
- return "This build of OpenOffice.org cannot be run on this system, OpenOffice.org requires MacOSX 10.3 (Panther) or newer system"
- end if
-
- if (aKey is equal to "ERROR_NEED_X11") then
- return "OpenOffice.org for Mac OS X cannot be started, because the X11 software is not installed. Please install Apple X11 first from the Mac OS X install DVD. More information: http://porting.openoffice.org/mac/faq/installing/X11.html"
- end if
- end try
-end getMessage
-
-
--- function for logging script messages
-on logEvent(themessage)
- set theLine to (do shell script Â
- "date +'%Y-%m-%d %H:%M:%S'" as string) Â
- & " " & themessage
- do shell script "echo " & quoted form of theLine & Â
- " >> ~/Library/Logs/OpenOffice%USERDIRPRODUCTVERSION.log"
-end logEvent
-
-
--- function for checking if a path exists
-on isRealPath(aPath)
- try
- alias aPath
- return true
- on error
- -- error number -43 from aPath
- -- display dialog "NotRP -- " & aPath
- return false
- end try
-end isRealPath
-
--- try to find X11 server on the Mac OS X system
--- return value: the found server or "NOXSERVER"
-on findXServer()
- -- First try standard X11 location, then try standard XDarwin location
-
- set whichserver to "NOXSERVER"
- --Utilities folder of system
- set Xserverloc to ((path to utilities folder from system domain) as string) & "X11.app:"
- --display dialog " Xserverloc" & Xserverloc
- if (isRealPath(Xserverloc)) then
- set whichserver to "X11"
- set Xserverloc to (POSIX path of Xserverloc)
- else
- --Applications folder of system
- set Xserverloc to ((path to applications folder from system domain) as string) & "XDarwin.app:"
- if (isRealPath(Xserverloc)) then
- set whichserver to "XDarwin"
- set Xserverloc to (POSIX path of Xserverloc)
- end if
- end if
-
- -- if nothing found yet try using locate, first with X11.app and then with XDarwin.app
- if (whichserver is equal to "NOXSERVER") then
- set Xserverloc to do shell script "locate X11.app/Contents/MacOS/X11 | sed -e 's-/Contents/MacOS/X11--g'"
- if Xserverloc ­ "" then
- set whichserver to "X11"
- end if
- end if
-
- if (whichserver is equal to "NOXSERVER") then
- set Xserverloc to do shell script "locate XDarwin.app/Contents/MacOS/XDarwin | sed -e 's-/Contents/MacOS/XDarwin--g'"
- if Xserverloc ­ "" then
- set whichserver to "XDarwin"
- end if
- end if
-
- return {whichserver, Xserverloc}
-end findXServer
-
-
--- Test for a minimum version of Mac OS X
-on atLeastOSXVersion(verMajor, verMinor, verStep)
- -- The StandardAdditions's 'system attribute' used to be the Finder's 'computer' command.
- tell application "Finder" to set sysv to (system attribute "sysv")
-
- -- Generate sysv-compatible number from given version
- set reqVer to ((verMajor div 10) * 4096 + (verMajor mod 10) * 256 + verMinor * 16 + verStep)
-
- -- DEBUGGING:
- -- display dialog ("RV:" & reqVer & " < " & sysv as string)
-
- -- set major to ((sysv div 4096) * 10 + (sysv mod 4096 div 256))
- -- set minor to (sysv mod 256 div 16)
- -- set step to (sysv mod 16)
- -- display dialog ("Your Mac OS X version: " & major & "." & minor & "." & step)
-
- if (reqVer > sysv) then
- return false
- else
- return true
- end if
-end atLeastOSXVersion
diff --git a/instsetoo_native/macosx/make_versioned.sh b/instsetoo_native/macosx/make_versioned.sh
deleted file mode 100755
index 04dbfb062d58..000000000000
--- a/instsetoo_native/macosx/make_versioned.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-#
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-#
-# Make versioned
-# Uses openoffice.lst to create versioned files for Mac OS X
-#
-
-# version commands, similar to other OOo code
-MAJOR=`sed -n '/^OpenOffice$/,/^}$/ s/.*USERDIRPRODUCTVERSION //p' ../util/openoffice.lst`
-MAJOR_MINOR=`sed -n '/^OpenOffice$/,/PRODUCTVERSION/ s/.*PRODUCTVERSION //p' ../util/openoffice.lst`
-MAJOR_MINOR_STEP=`sed -n '/^OpenOffice$/,/^}$/ s/.*ABOUTBOXPRODUCTVERSION //p' ../util/openoffice.lst`
-
-
-if [ -z "$1" -o -z "$2" ]; then
- echo "ERROR: missing argument(s):";
- echo ""
- echo "USAGE: $0 <source file> <target file>"
- echo " <source file> File to be versioned"
- echo " <target file> Path and filename where to put the versioned file"
- exit
-fi
-
-if [ ! -e "$1" ]; then
- echo "ERROR: source file not found"
- exit
-fi
-
-TARGET_PATH=`dirname "$2"`
-mkdir -p "$TARGET_PATH"
-
-echo "make_versioned.sh: Using versions $MAJOR - $MAJOR_MINOR - $MAJOR_MINOR_STEP for $1, storing to $TARGET_PATH"
-
-sed -e "s/\%USERDIRPRODUCTVERSION/${MAJOR}/g" "$1" | \
-sed -e "s/\%PRODUCTVERSION/${MAJOR_MINOR}/g" | \
-sed -e "s/\%ABOUTBOXPRODUCTVERSION/${MAJOR_MINOR_STEP}/g" >"$2"
diff --git a/instsetoo_native/macosx/makefile.mk b/instsetoo_native/macosx/makefile.mk
deleted file mode 100644
index 66b558d1038e..000000000000
--- a/instsetoo_native/macosx/makefile.mk
+++ /dev/null
@@ -1,85 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..
-TARGET=osxbundle
-
-# --- Settings -------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Files ----------------------------------------------------
-
-.IF "$(OS)"!="MACOSX" || "$(GUIBASE)"=="aqua"
-
-dummy:
- @echo "Nothing to build for OS $(OS) and GUIBASE $(GUIBASE)"
-
-.ELSE # "$(OS)"!="MACOSX"
-
-BUNDLE = $(MISC)$/OpenOffice.org.app
-CONTENTS = $(BUNDLE)$/Contents
-VERSIONED = $(MISC)$/versioned
-
-scriptfiles = \
- $(CONTENTS)$/Resources$/Scripts$/main.scpt \
- $(CONTENTS)$/Resources$/Scripts$/PostInstall.scpt
-
-ZIPFLAGS = -r
-ZIP1TARGET = osxbundle
-ZIP1DIR = $(CONTENTS)
-ZIP1LIST = * -x Info.plist -x PkgInfo
-
-# --- Targets --------------------------------------------------
-
-.INCLUDE : target.mk
-
-$(ZIP1TARGETN) : $(scriptfiles)
-
-# create application bundle from apple script source
-$(CONTENTS)$/Resources$/Scripts$/main.scpt : application/main.applescript
- $(RM) -r $(BUNDLE)
- make_versioned.sh "$<" "$(VERSIONED)/$<"
- osacompile -o $(BUNDLE) -c OOo2 -s "$(VERSIONED)/$<"
-
-$(CONTENTS)$/Resources$/Scripts$/%.scpt : application/%.applescript
- make_versioned.sh "$<" "$(VERSIONED)/$<"
- osacompile -d -o "$@" "$(VERSIONED)/$<"
- $(RM) "$(VERSIONED)/$<"
-
-# The InfoPlist.strings file has to be in UTF-16, thus a back-and-forth conversion
-# is needed for versioning
-#
-# THIS CODE IS PRESERVED FOR FUTURE LOCALIZATION EFFORTS
-#$(CONTENTS)$/Resources$/InfoPlist.strings : application/InfoPlist.strings
-# iconv -f UTF-16 -t UTF-8 "$<" > "$(VERSIONED)/tmp.utf8"
-# make_versioned.sh "$(VERSIONED)/tmp.utf8" "$(VERSIONED)/$<"
-# iconv -f UTF-8 -t UTF-16 "$(VERSIONED)/$<" > "$@"
-# $(RM) "$(VERSIONED)/tmp.utf8" "$(VERSIONED)/$<"
-
-.ENDIF # "$(OS)"!="MACOSX"
-
diff --git a/instsetoo_native/prj/build.lst b/instsetoo_native/prj/build.lst
index 8e8079d64720..68edddfe9b28 100644
--- a/instsetoo_native/prj/build.lst
+++ b/instsetoo_native/prj/build.lst
@@ -1,6 +1,5 @@
-oon instsetoo_native :: l10n postprocess packimages testautomation NULL
+oon instsetoo_native :: l10n postprocess packimages testautomation ooo_custom_images NULL
oon instsetoo_native usr1 - all oon_mkout NULL
oon instsetoo_native\inc_openoffice\unix nmake - u oon_unix NULL
oon instsetoo_native\inc_openoffice\windows\msi_languages nmake - all oon_msilang NULL
-oon instsetoo_native\macosx nmake - u oon_macosx_bundle NULL
-oon instsetoo_native\util nmake - all oon_util oon_macosx_bundle.u oon_msilang oon_unix.u NULL
+oon instsetoo_native\util nmake - all oon_util oon_msilang oon_unix.u NULL
diff --git a/instsetoo_native/res/osxdndinstall.png b/instsetoo_native/res/osxdndinstall.png
deleted file mode 100644
index 1d981820b8b2..000000000000
--- a/instsetoo_native/res/osxdndinstall.png
+++ /dev/null
Binary files differ
diff --git a/instsetoo_native/util/makefile.mk b/instsetoo_native/util/makefile.mk
index 09334fdc98c0..b2f014f6ad58 100644
--- a/instsetoo_native/util/makefile.mk
+++ b/instsetoo_native/util/makefile.mk
@@ -157,13 +157,16 @@ MSISDKOOTEMPLATEDIR=$(MSISDKOOTEMPLATESOURCE)
NOLOGOSPLASH:=$(BIN)$/intro.zip
DEVNOLOGOSPLASH:=$(BIN)$/dev$/intro.zip
BROFFICENOLOGOSPLASH:=$(BIN)$/broffice$/intro.zip
+BROFFICENOLOGOBRAND:=$(BIN)$/broffice$/images_brand.zip
BROFFICEDEVNOLOGOSPLASH:=$(BIN)$/broffice_dev$/intro.zip
+BROFFICENDEVOLOGOBRAND:=$(BIN)$/broffice_dev$/images_brand.zip
MSIOFFICETEMPLATEDIR=$(MISC)$/openoffice$/msi_templates
MSILANGPACKTEMPLATEDIR=$(MISC)$/ooolangpack$/msi_templates
MSIURETEMPLATEDIR=$(MISC)$/ure$/msi_templates
MSISDKOOTEMPLATEDIR=$(MISC)$/sdkoo$/msi_templates
-ADDDEPS=$(NOLOGOSPLASH) $(DEVNOLOGOSPLASH) $(BROFFICENOLOGOSPLASH) $(BROFFICEDEVNOLOGOSPLASH)
+ADDDEPS=$(NOLOGOSPLASH) $(DEVNOLOGOSPLASH) $(BROFFICENOLOGOSPLASH) $(BROFFICEDEVNOLOGOSPLASH) \
+ $(BROFFICENOLOGOBRAND) $(BROFFICEDEVNOLOGOBRAND)
.IF "$(OS)" == "WNT"
ADDDEPS+=hack_msitemplates
.ENDIF
@@ -198,11 +201,6 @@ $(MAKETARGETS) : $(ADDDEPS)
.ENDIF # "$(BUILD_SPECIAL)"!=""
-.IF "$(OS)" == "MACOSX"
-DMGDEPS=$(BIN)$/{osxdndinstall.png DS_Store DS_Store_Langpack}
-$(foreach,i,$(alllangiso) {openoffice openofficedev openofficewithjre ooolanguagepack broffice brofficedev brofficewithjre}_$i) : $(DMGDEPS)
-.ENDIF # "$(OS)" == "MACOSX"
-
$(foreach,i,$(alllangiso) openoffice_$i) : $$@{$(PKGFORMAT:^".")}
.IF "$(MAKETARGETS)"!=""
.IF "$(MAKETARGETS:e)"=="" && "$(MAKETARGETS:s/_//)"!="$(MAKETARGETS)"
@@ -314,8 +312,9 @@ $(BIN)$/broffice$/intro.zip : $(SOLARCOMMONPCKDIR)$/broffice_nologo$/intro.zip
@-$(MKDIR) $(@:d)
$(COPY) $< $@
-$(BIN)$/{osxdndinstall.png DS_Store DS_Store_Langpack} : $(PRJ)$/res$/$$(@:f)
- @$(COPY) $< $@
+$(BIN)$/broffice$/images_brand.zip : $(SOLARCOMMONBINDIR)$/broffice_nologo$/images_brand.zip
+ @-$(MKDIR) $(@:d)
+ $(COPY) $< $@
hack_msitemplates .PHONY:
-$(MKDIRHIER) $(MSIOFFICETEMPLATEDIR)
diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst
index 1dfdeb95321e..5ce50111d519 100644
--- a/instsetoo_native/util/openoffice.lst
+++ b/instsetoo_native/util/openoffice.lst
@@ -37,9 +37,10 @@ Globals
UPDATE_DATABASE_LISTNAME finals_instsetoo.txt
PACKAGEMAP package_names.txt,package_names_ext.txt
WINDOWSPATCHLEVEL 6
- OPENSOURCE 1
OOODOWNLOADNAME 1
STARTCENTER_LAYOUT_STYLE 0
+ BUILDIDCWS {buildidcws}
+ OPENSOURCE 1
}
}
}
@@ -92,6 +93,7 @@ OpenOffice
DOWNLOADBANNER ooobanner.bmp
DOWNLOADBITMAP ooobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
+ WINDOWSBITMAPDIRECTORY ..\inc_broffice\windows\msi_templates\Binary
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://tools.services.openoffice.org/forward/OpenOffice.org/extensions.jsp?cid=920794
STARTCENTER_INFO_URL http://tools.services.openoffice.org/forward/OpenOffice.org/homepage.jsp
@@ -158,6 +160,7 @@ OpenOffice_wJRE
DOWNLOADBANNER ooobanner.bmp
DOWNLOADBITMAP ooobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
+ WINDOWSBITMAPDIRECTORY ..\inc_broffice\windows\msi_templates\Binary
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://tools.services.openoffice.org/forward/OpenOffice.org/extensions.jsp?cid=920794
STARTCENTER_INFO_URL http://tools.services.openoffice.org/forward/OpenOffice.org/homepage.jsp
@@ -210,6 +213,7 @@ OpenOffice_Dev
PACKAGEREVISION {milestone}
LICENSENAME LGPL
SERVICESPROJEKT 1
+ WITHJREPRODUCT 1
GLOBALFILEGID gid_File_Lib_Vcl
GLOBALPATCHFILEGID gid_File_Txt_Patchfiles
SPELLCHECKERFILE spellchecker_selection.txt
@@ -229,6 +233,7 @@ OpenOffice_Dev
DOWNLOADBANNER ooobanner.bmp
DOWNLOADBITMAP ooobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
+ WINDOWSBITMAPDIRECTORY ..\inc_broffice\windows\msi_templates\Binary
LOCALUSERDIR $ORIGIN/..
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://tools.services.openoffice.org/forward/OpenOffice.org/extensions.jsp?cid=920794
@@ -436,6 +441,7 @@ BrOffice
DOWNLOADBANNER brobanner.bmp
DOWNLOADBITMAP brobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
+ WINDOWSBITMAPDIRECTORY ..\inc_broffice\windows\msi_templates\Binary
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://tools.services.openoffice.org/forward/BrOffice/extensions.jsp?cid=920794
STARTCENTER_INFO_URL http://tools.services.openoffice.org/forward/BrOffice/homepage.jsp
@@ -449,7 +455,7 @@ BrOffice
script setup_osl
downloadname BrOo_{productversion}_{os}_install_{languages}
langpackdownloadname BrOo_{productversion}_languagepack_{os}_install_{languages}
- include {solarenvpath}/{os}/loader2,.,{localpath}/bin/broffice,{localcommonpath}/bin,{localpath}/bin,{solarpath}/bin.{minor}/broffice,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor}/desktop-integration/{pkgtype},{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor}/broffice,{solarpath}/pck.{minor}/openoffice,{solarpath}/pck.{minor},{solarpath}/xml.{minor}/office/instance,{solarpath}/xml.{minor},{solarcommonpath}/bin.{minor}/osl,{solarcommonpath}/bin.{minor},{solarcommonpath}/pck.{minor}/broffice,{solarcommonpath}/pck.{minor}/openoffice,{solarcommonpath}/pck.{minor},../../external/common,{solarenvpath}/{os}/OOo_external
+ include {solarenvpath}/{os}/loader2,.,{solarpath}/bin.{minor}/broffice,{localpath}/bin/broffice,{localcommonpath}/bin,{localpath}/bin,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor}/desktop-integration/{pkgtype},{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor}/broffice,{solarpath}/pck.{minor}/openoffice,{solarpath}/pck.{minor},{solarpath}/xml.{minor}/office/instance,{solarpath}/xml.{minor},{solarcommonpath}/bin.{minor}/broffice,{solarcommonpath}/bin.{minor}/osl,{solarcommonpath}/bin.{minor},{solarcommonpath}/pck.{minor}/broffice,{solarcommonpath}/pck.{minor}/openoffice,{solarcommonpath}/pck.{minor},../../external/common,{solarenvpath}/{os}/OOo_external
}
}
@@ -507,6 +513,7 @@ BrOffice_wJRE
DOWNLOADBANNER brobanner.bmp
DOWNLOADBITMAP brobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
+ WINDOWSBITMAPDIRECTORY ..\inc_broffice\windows\msi_templates\Binary
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://tools.services.openoffice.org/forward/BrOffice/extensions.jsp?cid=920794
STARTCENTER_INFO_URL http://tools.services.openoffice.org/forward/BrOffice/homepage.jsp
@@ -519,7 +526,7 @@ BrOffice_wJRE
compression 5
script setup_osljre
downloadname BrOo_{productversion}_{os}_installwjre_{languages}
- include {solarenvpath}/{os}/loader2,.,{localpath}/bin/broffice,{localcommonpath}/bin,{localpath}/bin,{solarpath}/bin.{minor}/broffice,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor}/desktop-integration/{pkgtype},{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor}/broffice,{solarpath}/pck.{minor}/openoffice,{solarpath}/pck.{minor},{solarpath}/xml.{minor}/office/instance,{solarpath}/xml.{minor},{solarcommonpath}/bin.{minor}/osl,{solarcommonpath}/bin.{minor},{solarcommonpath}/pck.{minor}/broffice,{solarcommonpath}/pck.{minor}/openoffice,{solarcommonpath}/pck.{minor},../../external/common,{solarenvpath}/{os}/OOo_external
+ include {solarenvpath}/{os}/loader2,.,{solarpath}/bin.{minor}/broffice,{localpath}/bin/broffice,{localcommonpath}/bin,{localpath}/bin,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor}/desktop-integration/{pkgtype},{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor}/broffice,{solarpath}/pck.{minor}/openoffice,{solarpath}/pck.{minor},{solarpath}/xml.{minor}/office/instance,{solarpath}/xml.{minor},{solarcommonpath}/bin.{minor}/broffice,{solarcommonpath}/bin.{minor}/osl,{solarcommonpath}/bin.{minor},{solarcommonpath}/pck.{minor}/broffice,{solarcommonpath}/pck.{minor}/openoffice,{solarcommonpath}/pck.{minor},../../external/common,{solarenvpath}/{os}/OOo_external
}
}
@@ -542,11 +549,6 @@ BrOffice_Dev
USERDIRPRODUCTVERSION 3
ABOUTBOXPRODUCTVERSION 3.3.0
DEVELOPMENTPRODUCT 1
- PROGRESSBARCOLOR
- PROGRESSSIZE
- PROGRESSPOSITION
- PROGRESSFRAMECOLOR
- NATIVEPROGRESS
BASISPACKAGEPREFIX ooobasis-dev
UREPACKAGEPREFIX ooodev
SOLSUREPACKAGEPREFIX ooodev
@@ -563,6 +565,7 @@ BrOffice_Dev
PACKAGEREVISION {milestone}
LICENSENAME LGPL
SERVICESPROJEKT 1
+ WITHJREPRODUCT 1
SETSTATICPATH 1
GLOBALFILEGID gid_File_Lib_Vcl
GLOBALPATCHFILEGID gid_File_Txt_Patchfiles
@@ -582,6 +585,7 @@ BrOffice_Dev
DOWNLOADBANNER brobanner.bmp
DOWNLOADBITMAP brobitmap.bmp
DOWNLOADSETUPICO ooosetup.ico
+ WINDOWSBITMAPDIRECTORY ..\inc_broffice\windows\msi_templates\Binary
LOCALUSERDIR $ORIGIN/..
RELATIVE_PATHES_IN_DDF 1
STARTCENTER_ADDFEATURE_URL http://tools.services.openoffice.org/forward/BrOffice/extensions.jsp?cid=920794
@@ -596,6 +600,6 @@ BrOffice_Dev
script setup_osljre
downloadname BrOo-dev_{productversion}_{os}_install_{languages}
langpackdownloadname BrOo_{productversion}_languagepack_{os}_install_{languages}
- include {solarenvpath}/{os}/loader2,.,{localpath}/bin/broffice_dev,{localcommonpath}/bin,{localpath}/bin,{solarpath}/bin.{minor}/broffice,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor}/broffice,{solarpath}/pck.{minor}/openoffice,{solarpath}/pck.{minor},{solarpath}/xml.{minor}/office/instance,{solarpath}/xml.{minor},{solarcommonpath}/bin.{minor}/osl,{solarcommonpath}/bin.{minor},{solarcommonpath}/pck.{minor}/broffice_dev,{solarcommonpath}/pck.{minor}/broffice,{solarcommonpath}/pck.{minor}/openoffice_dev,{solarcommonpath}/pck.{minor}/openoffice,{solarcommonpath}/pck.{minor},../../external/common,{solarenvpath}/{os}/OOo_external
+ include {solarenvpath}/{os}/loader2,.,{solarpath}/bin.{minor}/broffice,{localpath}/bin/broffice_dev,{localcommonpath}/bin,{localpath}/bin,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor}/broffice,{solarpath}/pck.{minor}/openoffice,{solarpath}/pck.{minor},{solarpath}/xml.{minor}/office/instance,{solarpath}/xml.{minor},{solarcommonpath}/bin.{minor}/broffice,{solarcommonpath}/bin.{minor}/osl,{solarcommonpath}/bin.{minor},{solarcommonpath}/pck.{minor}/broffice_dev,{solarcommonpath}/pck.{minor}/broffice,{solarcommonpath}/pck.{minor}/openoffice_dev,{solarcommonpath}/pck.{minor}/openoffice,{solarcommonpath}/pck.{minor},../../external/common,{solarenvpath}/{os}/OOo_external
}
}
diff --git a/javainstaller2/src/Helpfiles/makefile.mk b/javainstaller2/src/Helpfiles/makefile.mk
index a45253613e5d..0f77f31a19ed 100755
--- a/javainstaller2/src/Helpfiles/makefile.mk
+++ b/javainstaller2/src/Helpfiles/makefile.mk
@@ -43,8 +43,15 @@ INPUT=java_ulffiles
.INCLUDE : target.mk
.IF "$(SOLAR_JAVA)"!=""
+.IF "$(WITH_LANG)"==""
+ULFDIR:=$(PRJ)/src/Localization
+.ELSE #"$(WITH_LANG)"==""
+ULFDIR:=$(COMMONMISC)/$(INPUT)
+.ENDIF #"$(WITH_LANG)"==""
+
+
ALLTAR: $(BIN)$/Prologue.html
-$(BIN)$/Prologue.html : create_helpfiles.pl helpfilenames.txt $(COMMONMISC)$/$(INPUT)$/setupstrings.ulf
- $(PERL) create_helpfiles.pl $/ $(COMMONMISC)$/$(INPUT) $(BIN)
+$(BIN)$/Prologue.html : create_helpfiles.pl helpfilenames.txt $(ULFDIR)/setupstrings.ulf
+ $(PERL) create_helpfiles.pl / $(ULFDIR) $(BIN)
.ENDIF
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/SolarisHelper.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/SolarisHelper.java
index ccc1e7bf11df..ad3460159262 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/SolarisHelper.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/SolarisHelper.java
@@ -120,8 +120,8 @@ public class SolarisHelper {
String mailLine = "mail=";
adminFile.add(mailLine);
- String conflictLine = "conflict=quit";
- if ( data.isUserInstallation() ) { conflictLine = "conflict=nocheck"; }
+ String conflictLine = "conflict=nochange";
+ if ( data.isUserInstallation() ) { conflictLine = "conflict=nochange"; }
adminFile.add(conflictLine);
String runlevelLine = "runlevel=nocheck";
diff --git a/javainstaller2/src/Localization/makefile.mk b/javainstaller2/src/Localization/makefile.mk
index 27f679318d85..30161590cdb8 100755
--- a/javainstaller2/src/Localization/makefile.mk
+++ b/javainstaller2/src/Localization/makefile.mk
@@ -30,7 +30,9 @@ PRJ=..$/..
PRJNAME=javainstaller2
TARGET=java_ulffiles
+.IF "$(WITH_LANG)"!=""
WITH_LANG!:=ALL
+.ENDIF # "$(WITH_LANG)"!=""
# --- Settings -----------------------------------------------------
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx b/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx
index 1647a1d9359b..3302fe42e90c 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx
@@ -69,9 +69,11 @@ namespace jfw_plugin
#define JFW_PLUGIN_ARCH "m68k"
#elif defined HPPA
#define JFW_PLUGIN_ARCH "parisc"
-#else // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K, HPPA
+#elif defined AXP
+#define JFW_PLUGIN_ARCH "alpha"
+#else // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K, HPPA, ALPHA
#error unknown plattform
-#endif // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K, HPPA
+#endif // SPARC, INTEL, POWERPC, MIPS, ARM, IA64, M68K, HPPA, ALPHA
class MalformedVersionException
diff --git a/lpsolve/lp_solve_5.5.patch b/lpsolve/lp_solve_5.5.patch
index fc446a4e5727..c6c780668554 100644
--- a/lpsolve/lp_solve_5.5.patch
+++ b/lpsolve/lp_solve_5.5.patch
@@ -26,7 +26,10 @@
+rm *.o 2>/dev/null
--- misc/lp_solve_5.5/lpsolve55/ccc.osx Thu Jun 23 22:53:08 2005
+++ misc/build/lp_solve_5.5/lpsolve55/ccc.osx Wed May 21 17:19:56 2008
-@@ -3,6 +3,10 @@
+@@ -1,8 +1,12 @@
+ src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../colamd/colamd.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
+-c=cc
++c=$CC
def=
so=
diff --git a/moz/makefile.mk b/moz/makefile.mk
index 050d923c48e7..9629f7138b74 100644
--- a/moz/makefile.mk
+++ b/moz/makefile.mk
@@ -85,7 +85,8 @@ PATCH_FILES = \
seamonkey-source-$(MOZILLA_VERSION).patch \
patches/dtoa.patch \
patches/respect_disable_pango.patch \
- patches/arm_build_fix.patch
+ patches/arm_build_fix.patch \
+ patches/link_fontconfig.patch
# This file is needed for the W32 build when BUILD_MOZAB is set
# (currently only vc8/vs2005 is supported when BUILD_MOZAB is set)
diff --git a/moz/patches/link_fontconfig.patch b/moz/patches/link_fontconfig.patch
new file mode 100644
index 000000000000..66e82fa63e52
--- /dev/null
+++ b/moz/patches/link_fontconfig.patch
@@ -0,0 +1,11 @@
+--- misc/mozilla/gfx/src/gtk/Makefile.in 2010-03-16 14:44:44.000000000 +0000
++++ misc/build/mozilla/gfx/src/gtk/Makefile.in 2010-03-16 14:45:08.000000000 +0000
+@@ -183,7 +183,7 @@
+ endif
+
+ ifdef MOZ_ENABLE_XFT
+-EXTRA_DSO_LDOPTS += $(FT2_LIBS)
++EXTRA_DSO_LDOPTS += $(FT2_LIBS) -lfontconfig
+
+ libs:: fontEncoding.properties pangoFontEncoding.properties
+ $(INSTALL) $^ $(DIST)/bin/res/fonts
diff --git a/mysqlc/images/sun_extension.png b/mysqlc/images/sun_extension.png
deleted file mode 100644
index cf3fe5f0d598..000000000000
--- a/mysqlc/images/sun_extension.png
+++ /dev/null
Binary files differ
diff --git a/mysqlc/images/sun_extension_hc.png b/mysqlc/images/sun_extension_hc.png
deleted file mode 100644
index 535a6bfdff4f..000000000000
--- a/mysqlc/images/sun_extension_hc.png
+++ /dev/null
Binary files differ
diff --git a/mysqlc/source/description.xml b/mysqlc/source/description.xml
index 0dc3284fa869..bc7563d39177 100644..100755
--- a/mysqlc/source/description.xml
+++ b/mysqlc/source/description.xml
@@ -20,8 +20,8 @@
<name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
</publisher>
<icon>
- <default xlink:href="images/sun_extension.png" />
- <high-contrast xlink:href="images/sun_extension_hc.png" />
+ <default xlink:href="images/extension_32.png" />
+ <high-contrast xlink:href="images/extension_32_h.png" />
</icon>
<extension-description>
<src lang="#LANG#" xlink:href="description/description_#LANG#.txt"/>
diff --git a/mysqlc/source/description/description_en-US.txt b/mysqlc/source/description/description_en-US.txt
index bb3cf174a772..a8ddd5985cfc 100644..100755
--- a/mysqlc/source/description/description_en-US.txt
+++ b/mysqlc/source/description/description_en-US.txt
@@ -1 +1 @@
-The MySQL Connector for Oracle Open Office (formerly StarOffice) and OpenOffice.org installs a native MySQL database driver. It is faster, seamless integrated, easier to administrate and there is no need to install and setup a JDBC or ODBC driver separately. It was never easier to use MySQL databases in OpenOffice.org Base.
+The MySQL Connector for OpenOffice.org installs a native MySQL database driver. It is faster, seamless integrated, easier to administrate and there is no need to install and setup a JDBC or ODBC driver separately. It was never easier to use MySQL databases in OpenOffice.org Base.
diff --git a/mysqlc/source/makefile.mk b/mysqlc/source/makefile.mk
index 516f10a7dc0a..49c67344698f 100644..100755
--- a/mysqlc/source/makefile.mk
+++ b/mysqlc/source/makefile.mk
@@ -225,8 +225,8 @@ COMPONENT_LIBRARIES=\
$(COMPONENT_LIBRARY)
COMPONENT_IMAGES= \
- $(EXTENSIONDIR)$/images$/sun_extension.png \
- $(EXTENSIONDIR)$/images$/sun_extension_hc.png
+ $(EXTENSIONDIR)$/images$/extension_32.png \
+ $(EXTENSIONDIR)$/images$/extension_32_h.png
# ........ component description ........
@@ -267,9 +267,9 @@ EXTENSION_PACKDEPS+=$(COMPONENT_MYSQL_CPPCONN_FILE)
.INCLUDE : target.mk
.INCLUDE : extension_post.mk
-$(EXTENSIONDIR)$/images$/%.png : $(PRJ)$/images$/%.png
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
- @$(COPY) $< $@ > $(NULLDEV)
+ $(COPY) $< $@
# existing descriptions: just copy
$(EXTENSIONDIR)$/description$/%.txt: .$/description$/%.txt
diff --git a/offapi/com/sun/star/accessibility/AccessibleRole.idl b/offapi/com/sun/star/accessibility/AccessibleRole.idl
index 7231db672c07..5fe65d04ec42 100644
--- a/offapi/com/sun/star/accessibility/AccessibleRole.idl
+++ b/offapi/com/sun/star/accessibility/AccessibleRole.idl
@@ -686,6 +686,33 @@ published constants AccessibleRole
@since OOo 3.0
*/
const short TREE_TABLE = 80;
+
+ /** Comment role
+
+ <p>An object which represents a comment.</p>
+
+ <p>A comment is anchored at a certain content position in the document and
+ annotates this document content position or a certain text range of the document content.
+ In the OpenDocument file format a comment is known as an annotation.</p>
+
+ <p>See also <const>COMMENT_END</const>.</p>
+
+ @since OOo 3.2
+ */
+ const short COMMENT = 81;
+
+ /** Comment end role
+
+ <p>An invisible object which represents the end position of a text range which
+ is annotated by a comment - see <const>COMMENT</const>.</p>
+
+ <p>This object and the corresponding object representing the comment shall be
+ in relation of type <const>MEMBER_OF</const>.</p>
+
+ @since OOo 3.2
+ */
+ const short COMMENT_END = 82;
+
};
}; }; }; };
diff --git a/offapi/com/sun/star/rdf/XDocumentRepository.idl b/offapi/com/sun/star/rdf/XDocumentRepository.idl
index ee42faf0c51c..215fd89fa954 100644
--- a/offapi/com/sun/star/rdf/XDocumentRepository.idl
+++ b/offapi/com/sun/star/rdf/XDocumentRepository.idl
@@ -28,6 +28,10 @@
#ifndef __com_sun_star_rdf_XDocumentRepository_idl__
#define __com_sun_star_rdf_XDocumentRepository_idl__
+#ifndef __com_sun_star_beans_Pair_idl__
+#include <com/sun/star/beans/Pair.idl>
+#endif
+
#ifndef __com_sun_star_rdf_XMetadatable_idl__
#include <com/sun/star/rdf/XMetadatable.idl>
#endif
@@ -84,13 +88,6 @@ interface XDocumentRepository : XRepository
<code>Subject Predicate XLiteral(RDFaContent^^RDFaDatatype)</code>
</li>
</ul>
- Further, add the following RDF statement to the same unspecified
- named graph:
- <ul>
- <li>
- <code>Subject rdfs:label XLiteral(Object->getText())</code>
- </li>
- </ul>
</li>
</ol>
</p>
@@ -172,13 +169,13 @@ interface XDocumentRepository : XRepository
<li>if the element has no RDFa meta-data attributes:
the empty sequence.</li>
<li>if the element has RDFa meta-data attributes:
- and no <code>rdfa:content</code> attached:
- a sequence with the RDFa-statements corresponding to the
- attributes</li>
- <li>if the element has RDFa meta-data attributes,
- and also <code>rdfa:content</code> attached:
- a sequence with the RDFa-statements corresponding to the
- attributes, including the RDFa-labels-statement</li>
+ <ul>
+ <li>a sequence with the RDFa-statements corresponding to the
+ attributes.</li>
+ <li>a flag indicating whether there is a xhtml:content
+ attribute.</li>
+ </ul>
+ </li>
</ul>
@throws com::sun::star::lang::IllegalArgumentException
@@ -190,7 +187,8 @@ interface XDocumentRepository : XRepository
@see Statement
*/
- sequence<Statement> getStatementRDFa([in] XMetadatable Element)
+ com::sun::star::beans::Pair< sequence<Statement>, boolean >
+ getStatementRDFa([in] XMetadatable Element)
raises( com::sun::star::lang::IllegalArgumentException,
RepositoryException );
diff --git a/offapi/com/sun/star/text/InContentMetadata.idl b/offapi/com/sun/star/text/InContentMetadata.idl
index f6aec7bbee63..5eac10714576 100755
--- a/offapi/com/sun/star/text/InContentMetadata.idl
+++ b/offapi/com/sun/star/text/InContentMetadata.idl
@@ -32,6 +32,10 @@
#include <com/sun/star/container/XEnumerationAccess.idl>
#endif
+#ifndef __com_sun_star_container_XChild_idl__
+#include <com/sun/star/container/XChild.idl>
+#endif
+
#ifndef __com_sun_star_text_TextContent_idl__
#include <com/sun/star/text/TextContent.idl>
#endif
@@ -68,6 +72,12 @@ service InContentMetadata
annotated range of text can be enumerated. */
interface com::sun::star::container::XEnumerationAccess;
+ //-------------------------------------------------------------------------
+ /** The <type>TextContent</type> that is the parent of this text range.
+ @since OOo 3.3
+ */
+ interface com::sun::star::container::XChild;
+
};
diff --git a/offapi/com/sun/star/text/TextMarkupType.idl b/offapi/com/sun/star/text/TextMarkupType.idl
index d99942e0d12f..5137d47d217f 100644
--- a/offapi/com/sun/star/text/TextMarkupType.idl
+++ b/offapi/com/sun/star/text/TextMarkupType.idl
@@ -58,6 +58,12 @@ constants TextMarkupType
/// An inivisible markup used to identify sentence boundaries.
/// @since OOo 3.0.1
const long SENTENCE = 4;
+
+ /// Markups originates from change tracking.
+ /// @since OOo 3.3
+ const long TRACK_CHANGE_INSERTION = 5;
+ const long TRACK_CHANGE_DELETION = 6;
+ const long TRACK_CHANGE_FORMATCHANGE = 7;
};
}; }; }; };
diff --git a/offapi/com/sun/star/text/TextRangeContentProperties.idl b/offapi/com/sun/star/text/TextRangeContentProperties.idl
new file mode 100644
index 000000000000..74acb67cf9ed
--- /dev/null
+++ b/offapi/com/sun/star/text/TextRangeContentProperties.idl
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef __com_sun_star_text_TextRangeContentProperties_idl__
+#define __com_sun_star_text_TextRangeContentProperties_idl__
+
+#ifndef __com_sun_star_table_XCell_idl__
+#include <com/sun/star/table/XCell.idl>
+#endif
+
+#ifndef __com_sun_star_text_XTextContent_idl__
+#include <com/sun/star/text/XTextContent.idl>
+#endif
+
+#ifndef __com_sun_star_text_XDocumentIndex_idl__
+#include <com/sun/star/text/XDocumentIndex.idl>
+#endif
+
+#ifndef __com_sun_star_text_XTextTable_idl__
+#include <com/sun/star/text/XTextTable.idl>
+#endif
+
+#ifndef __com_sun_star_text_XTextFrame_idl__
+#include <com/sun/star/text/XTextFrame.idl>
+#endif
+
+#ifndef __com_sun_star_text_XTextSection_idl__
+#include <com/sun/star/text/XTextSection.idl>
+#endif
+
+#ifndef __com_sun_star_text_XDocumentIndexMark_idl__
+#include <com/sun/star/text/XDocumentIndexMark.idl>
+#endif
+
+#ifndef __com_sun_star_text_XFootnote_idl__
+#include <com/sun/star/text/XFootnote.idl>
+#endif
+
+
+//=============================================================================
+
+module com { module sun { module star { module text {
+
+//=============================================================================
+
+/** describes the structural properties to retrieve text contents.
+
+ @since OOo 3.3
+ */
+service TextRangeContentProperties
+{
+ //-------------------------------------------------------------------------
+ /** may contain a document index. */
+ [optional, readonly, property] com::sun::star::text::XDocumentIndex
+ DocumentIndex;
+
+ //-------------------------------------------------------------------------
+ /** may contain a text table. */
+ [optional, readonly, property] com::sun::star::text::XTextTable
+ TextTable;
+
+ //-------------------------------------------------------------------------
+ /** may contain a table cell. */
+ [optional, readonly, property] com::sun::star::table::XCell Cell;
+
+ //-------------------------------------------------------------------------
+ /** may contain a text frame. */
+ [optional, readonly, property] com::sun::star::text::XTextFrame
+ TextFrame;
+
+ //-------------------------------------------------------------------------
+ /** may contain a text section. */
+ [optional, readonly, property] com::sun::star::text::XTextSection
+ TextSection;
+
+ //-------------------------------------------------------------------------
+ /** may contain a document index mark. */
+ [optional, readonly, property] com::sun::star::text::XDocumentIndexMark
+ DocumentIndexMark;
+
+ //-------------------------------------------------------------------------
+ /** may contain a reference mark. */
+ [optional, readonly, property] com::sun::star::text::XTextContent
+ ReferenceMark;
+
+ //-------------------------------------------------------------------------
+ /** may contain a footnote. */
+ [optional, readonly, property] com::sun::star::text::XFootnote Footnote;
+
+ //-------------------------------------------------------------------------
+ /** may contain a endnote. */
+ [optional, readonly, property] com::sun::star::text::XFootnote Endnote;
+
+ //-------------------------------------------------------------------------
+ /** may contain a nested text content.
+
+ For example, may contain an <type>InContentMetadata</type> or a
+ <type scope="com::sun::star::text::textfield">MetadataField</type>.
+ */
+ [optional, readonly, property] com::sun::star::text::XTextContent
+ NestedTextContent;
+
+};
+
+//=============================================================================
+
+}; }; }; };
+
+#endif
diff --git a/offapi/com/sun/star/text/makefile.mk b/offapi/com/sun/star/text/makefile.mk
index 28c3d1eaece3..4e6d24746af8 100644
--- a/offapi/com/sun/star/text/makefile.mk
+++ b/offapi/com/sun/star/text/makefile.mk
@@ -173,6 +173,7 @@ IDLFILES=\
TextPortionEnumeration.idl\
TextRange.idl\
TextRanges.idl\
+ TextRangeContentProperties.idl\
TextSection.idl\
TextSections.idl\
TextSortable.idl\
diff --git a/offapi/com/sun/star/text/textfield/MetadataField.idl b/offapi/com/sun/star/text/textfield/MetadataField.idl
index 85541457aef7..d98c4be39e96 100755
--- a/offapi/com/sun/star/text/textfield/MetadataField.idl
+++ b/offapi/com/sun/star/text/textfield/MetadataField.idl
@@ -32,6 +32,10 @@
#include <com/sun/star/container/XEnumerationAccess.idl>
#endif
+#ifndef __com_sun_star_container_XChild_idl__
+#include <com/sun/star/container/XChild.idl>
+#endif
+
#ifndef __com_sun_star_text_TextField_idl__
#include <com/sun/star/text/TextField.idl>
#endif
@@ -79,6 +83,13 @@ service MetadataField
interface com::sun::star::container::XEnumerationAccess;
//-------------------------------------------------------------------------
+ /** The <type scope="com::sun::star::text">TextContent</type>
+ that is the parent of this <type>MetadataField</type>.
+ @since OOo 3.3
+ */
+ interface com::sun::star::container::XChild;
+
+ //-------------------------------------------------------------------------
/** this is the number format for this field.
@see com::sun::star::util::NumberFormatter
*/
diff --git a/officecfg/registry/component-update.dtd b/officecfg/registry/component-update.dtd
index 51623f40bafa..81acc5e35eee 100644
--- a/officecfg/registry/component-update.dtd
+++ b/officecfg/registry/component-update.dtd
@@ -113,7 +113,8 @@
<!ELEMENT oor:items (item*)>
<!ATTLIST oor:items>
-<!ELEMENT item ((prop | node)*)>
+<!ELEMENT item ((node | prop | value)*)>
<!ATTLIST item
oor:path CDATA #REQUIRED>
- <!-- the absolute path representation of a set or group node -->
+ <!-- the absolute path representation of a localized property or a group
+ or set node -->
diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu
index fe1fb92abb0e..03e37b72f9ad 100644
--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu
@@ -134,7 +134,7 @@
<prop oor:name="TemplateRepositoryURL" oor:type="xs:string">
<value>${STARTCENTER_TEMPLREP_URL}</value>
</prop>
- <prop oor:name="StartCenterLayoutStyle" oor:type="xs:int">
+ <prop oor:name="StartCenterLayoutStyle" oor:type="xs:int" install:module="brand">
<value>${STARTCENTER_LAYOUT_STYLE}</value>
</prop>
</node>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu
index 29e26bbf29a9..304ce02282e6 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartWindowState.xcu
@@ -73,6 +73,90 @@
<value>true</value>
</prop>
</node>
+ <node oor:name="private:resource/toolbar/basicshapes" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Basic Shapes</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/symbolshapes" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Symbol Shapes</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/arrowshapes" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Block Arrows</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/flowchartshapes" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Flowchart</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/calloutshapes" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Callouts</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/starshapes" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Stars and Banners</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
</node>
</node>
</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
index 553d94fc2fdb..76e6a29003d0 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -229,7 +229,7 @@
<value>com.sun.star.comp.chart.ElementSelectorToolbarController</value>
</prop>
</node>
- <node oor:name="c4" oor:op="replace">
+ <node oor:name="com.sun.star.chart2.BasicShapesToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:BasicShapes</value>
</prop>
@@ -237,10 +237,10 @@
<value>com.sun.star.chart2.ChartDocument</value>
</prop>
<prop oor:name="Controller">
- <value>com.sun.star.chart2.comp.ShapeToolbarController</value>
+ <value>com.sun.star.comp.chart2.ShapeToolbarController</value>
</prop>
</node>
- <node oor:name="c5" oor:op="replace">
+ <node oor:name="com.sun.star.chart2.SymbolShapesToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:SymbolShapes</value>
</prop>
@@ -248,10 +248,10 @@
<value>com.sun.star.chart2.ChartDocument</value>
</prop>
<prop oor:name="Controller">
- <value>com.sun.star.chart2.comp.ShapeToolbarController</value>
+ <value>com.sun.star.comp.chart2.ShapeToolbarController</value>
</prop>
</node>
- <node oor:name="c6" oor:op="replace">
+ <node oor:name="com.sun.star.chart2.ArrowShapesToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:ArrowShapes</value>
</prop>
@@ -259,10 +259,10 @@
<value>com.sun.star.chart2.ChartDocument</value>
</prop>
<prop oor:name="Controller">
- <value>com.sun.star.chart2.comp.ShapeToolbarController</value>
+ <value>com.sun.star.comp.chart2.ShapeToolbarController</value>
</prop>
</node>
- <node oor:name="c7" oor:op="replace">
+ <node oor:name="com.sun.star.chart2.FlowChartShapesToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:FlowChartShapes</value>
</prop>
@@ -270,10 +270,10 @@
<value>com.sun.star.chart2.ChartDocument</value>
</prop>
<prop oor:name="Controller">
- <value>com.sun.star.chart2.comp.ShapeToolbarController</value>
+ <value>com.sun.star.comp.chart2.ShapeToolbarController</value>
</prop>
</node>
- <node oor:name="c8" oor:op="replace">
+ <node oor:name="com.sun.star.chart2.CalloutShapesToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:CalloutShapes</value>
</prop>
@@ -281,10 +281,10 @@
<value>com.sun.star.chart2.ChartDocument</value>
</prop>
<prop oor:name="Controller">
- <value>com.sun.star.chart2.comp.ShapeToolbarController</value>
+ <value>com.sun.star.comp.chart2.ShapeToolbarController</value>
</prop>
</node>
- <node oor:name="c9" oor:op="replace">
+ <node oor:name="com.sun.star.chart2.StarShapesToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:StarShapes</value>
</prop>
@@ -292,7 +292,7 @@
<value>com.sun.star.chart2.ChartDocument</value>
</prop>
<prop oor:name="Controller">
- <value>com.sun.star.chart2.comp.ShapeToolbarController</value>
+ <value>com.sun.star.comp.chart2.ShapeToolbarController</value>
</prop>
</node>
</node>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu
index 5373bf31b1fc..53d2ca72cbf4 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawWindowState.xcu
@@ -705,7 +705,21 @@
<prop oor:name="ContextSensitive" oor:type="xs:boolean">
<value>true</value>
</prop>
- </node>
- </node>
+ </node>
+ <node oor:name="private:resource/toolbar/optimizetablebar" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Optimize</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ </node>
</node>
</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
index 079855def699..422230b9e0a1 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
@@ -800,7 +800,21 @@
<prop oor:name="ContextSensitive" oor:type="xs:boolean">
<value>true</value>
</prop>
- </node>
- </node>
+ </node>
+ <node oor:name="private:resource/toolbar/optimizetablebar" oor:op="replace">
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Optimize</value>
+ </prop>
+ <prop oor:name="HideFromToolbarMenu" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ </node>
</node>
</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/Writer.xcu b/officecfg/registry/data/org/openoffice/Office/Writer.xcu
index 56e6f745a0da..b318614ef789 100644
--- a/officecfg/registry/data/org/openoffice/Office/Writer.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Writer.xcu
@@ -40,7 +40,7 @@
<prop oor:name="IsHideEmptyParagraphs" >
<value>true</value>
</prop>
- <prop oor:name="EMailSupported" install:module="javamail">
+ <prop oor:name="EMailSupported">
<value>true</value>
</prop>
</node>
diff --git a/officecfg/registry/data/org/openoffice/Office/makefile.mk b/officecfg/registry/data/org/openoffice/Office/makefile.mk
index 5cd876f75b19..e65b03371da3 100644
--- a/officecfg/registry/data/org/openoffice/Office/makefile.mk
+++ b/officecfg/registry/data/org/openoffice/Office/makefile.mk
@@ -88,7 +88,6 @@ MODULEFILES= \
Paths-unxwnt.xcu \
Paths-unixdesktop.xcu \
Writer-cjk.xcu \
- Writer-javamail.xcu \
Impress-ogltrans.xcu \
Embedding-calc.xcu \
Embedding-chart.xcu \
diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu
index 6d7259b00ac2..120f212112d6 100755
--- a/officecfg/registry/data/org/openoffice/Setup.xcu
+++ b/officecfg/registry/data/org/openoffice/Setup.xcu
@@ -767,14 +767,14 @@
<prop oor:name="ExcludedFiles">
</prop>
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.DataAccess</value>
+ <value>/org.openoffice.Office.DataAccess</value>
</prop>
<prop oor:name="ExcludedNodes">
<value>
- org.openoffice.Office.DataAccess/Bibliography
- org.openoffice.Office.DataAccess/ConnectionPool
- org.openoffice.Office.DataAccess/DataSources
- org.openoffice.Office.DataAccess/DriverManager
+ <it>/org.openoffice.Office.DataAccess/Bibliography</it>
+ <it>/org.openoffice.Office.DataAccess/ConnectionPool</it>
+ <it>/org.openoffice.Office.DataAccess/DataSources</it>
+ <it>/org.openoffice.Office.DataAccess/DriverManager</it>
</value>
</prop>
</node>
@@ -785,9 +785,7 @@
</node>
<node oor:name="Inet" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>
- org.openoffice.Inet
- </value>
+ <value>/org.openoffice.Inet</value>
</prop>
</node>
<node oor:name="Basic" oor:op="replace">
@@ -797,7 +795,7 @@
</node>
<node oor:name="UserProfile" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.UserProfile</value>
+ <value>/org.openoffice.UserProfile</value>
</prop>
</node>
<node oor:name="Common" oor:op="replace">
@@ -814,77 +812,77 @@
</prop>
<prop oor:name="IncludedNodes">
<value>
- org.openoffice.Office.Compatibility
- org.openoffice.Office.Custom
- org.openoffice.Office.Embedding
- org.openoffice.Office.Events
- org.openoffice.Office.ExtendedColorScheme
- org.openoffice.Office.Common/Accessibility
- org.openoffice.Office.Common/Accessibility/AutoDetectSystemHC
- org.openoffice.Office.Common/AsianLayout
- org.openoffice.Office.Common/AutoCorrect
- org.openoffice.Office.Common/Cache
- org.openoffice.Office.Common/DateFormat
- org.openoffice.Office.Common/ExternalMailer/Program
- org.openoffice.Office.Common/Filter
- org.openoffice.Office.Common/Font
- org.openoffice.Office.Common/Forms
- org.openoffice.Office.Common/Gallery
- org.openoffice.Office.Common/Help
- org.openoffice.Office.Common/History
- org.openoffice.Office.Common/I18N
- org.openoffice.Office.Common/InternalMSExport
- org.openoffice.Office.Common/Load
- org.openoffice.Office.Common/Misc/FormControlPilotsEnabled
- org.openoffice.Office.Common/Misc/PluginsEnabled
- org.openoffice.Office.Common/Misc/SymbolSet
- org.openoffice.Office.Common/Misc/UseSystemFileDialog
- org.openoffice.Office.Common/Misc/UseSystemPrintDialog
- org.openoffice.Office.Common/Misc/SymbolStyle
- org.openoffice.Office.Common/Passwords
- org.openoffice.Office.Common/Print/PrintingModifiesDocument
- org.openoffice.Office.Common/Print/Warning
- org.openoffice.Office.Common/Vectorize
- org.openoffice.Office.Common/Save
- org.openoffice.Office.Common/SearchOptions
- org.openoffice.Office.Common/Undo
- org.openoffice.Office.Common/View/Dialog/Dialog/MiddleMouseButton
- org.openoffice.Office.Common/View/Dialog/MousePositioning
- org.openoffice.Office.Common/View/Localization
- org.openoffice.Office.Common/View/Menu
- org.openoffice.Office.Common/_3D_Engine
+ <it>/org.openoffice.Office.Compatibility</it>
+ <it>/org.openoffice.Office.Custom</it>
+ <it>/org.openoffice.Office.Embedding</it>
+ <it>/org.openoffice.Office.Events</it>
+ <it>/org.openoffice.Office.ExtendedColorScheme</it>
+ <it>/org.openoffice.Office.Common/Accessibility</it>
+ <it>/org.openoffice.Office.Common/Accessibility/AutoDetectSystemHC</it>
+ <it>/org.openoffice.Office.Common/AsianLayout</it>
+ <it>/org.openoffice.Office.Common/AutoCorrect</it>
+ <it>/org.openoffice.Office.Common/Cache</it>
+ <it>/org.openoffice.Office.Common/DateFormat</it>
+ <it>/org.openoffice.Office.Common/ExternalMailer/Program</it>
+ <it>/org.openoffice.Office.Common/Filter</it>
+ <it>/org.openoffice.Office.Common/Font</it>
+ <it>/org.openoffice.Office.Common/Forms</it>
+ <it>/org.openoffice.Office.Common/Gallery</it>
+ <it>/org.openoffice.Office.Common/Help</it>
+ <it>/org.openoffice.Office.Common/History</it>
+ <it>/org.openoffice.Office.Common/I18N</it>
+ <it>/org.openoffice.Office.Common/InternalMSExport</it>
+ <it>/org.openoffice.Office.Common/Load</it>
+ <it>/org.openoffice.Office.Common/Misc/FormControlPilotsEnabled</it>
+ <it>/org.openoffice.Office.Common/Misc/PluginsEnabled</it>
+ <it>/org.openoffice.Office.Common/Misc/SymbolSet</it>
+ <it>/org.openoffice.Office.Common/Misc/UseSystemFileDialog</it>
+ <it>/org.openoffice.Office.Common/Misc/UseSystemPrintDialog</it>
+ <it>/org.openoffice.Office.Common/Misc/SymbolStyle</it>
+ <it>/org.openoffice.Office.Common/Passwords</it>
+ <it>/org.openoffice.Office.Common/Print/PrintingModifiesDocument</it>
+ <it>/org.openoffice.Office.Common/Print/Warning</it>
+ <it>/org.openoffice.Office.Common/Vectorize</it>
+ <it>/org.openoffice.Office.Common/Save</it>
+ <it>/org.openoffice.Office.Common/SearchOptions</it>
+ <it>/org.openoffice.Office.Common/Undo</it>
+ <it>/org.openoffice.Office.Common/View/Dialog/Dialog/MiddleMouseButton</it>
+ <it>/org.openoffice.Office.Common/View/Dialog/MousePositioning</it>
+ <it>/org.openoffice.Office.Common/View/Localization</it>
+ <it>/org.openoffice.Office.Common/View/Menu</it>
+ <it>/org.openoffice.Office.Common/_3D_Engine</it>
</value>
</prop>
<prop oor:name="ExcludedNodes">
<value>
- org.openoffice.Office.Common/_3D_Engine/OpenGL
- org.openoffice.Office.Common/Help/Registration
+ <it>/org.openoffice.Office.Common/_3D_Engine/OpenGL</it>
+ <it>/org.openoffice.Office.Common/Help/Registration</it>
</value>
</prop>
</node>
<node oor:name="Calc" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Calc</value>
+ <value>/org.openoffice.Office.Calc</value>
</prop>
</node>
<node oor:name="Chart" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Chart</value>
+ <value>/org.openoffice.Office.Chart</value>
</prop>
</node>
<node oor:name="Draw" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Draw</value>
+ <value>/org.openoffice.Office.Draw</value>
</prop>
</node>
<node oor:name="Impress" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Impress</value>
+ <value>/org.openoffice.Office.Impress</value>
</prop>
</node>
<node oor:name="Labels" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Labels</value>
+ <value>/org.openoffice.Office.Labels</value>
</prop>
</node>
<node oor:name="Linguistic" oor:op="replace">
@@ -892,36 +890,36 @@
<value>com.sun.star.migration.Wordbooks</value>
</prop>
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Linguistic</value>
+ <value>/org.openoffice.Office.Linguistic</value>
</prop>
<prop oor:name="ExcludedNodes">
- <value>org.openoffice.Office.Linguistic/ServiceManager</value>
+ <value>/org.openoffice.Office.Linguistic/ServiceManager</value>
</prop>
</node>
<node oor:name="Math" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Math</value>
+ <value>/org.openoffice.Office.Math</value>
</prop>
</node>
<node oor:name="Security" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Security</value>
+ <value>/org.openoffice.Office.Security</value>
</prop>
</node>
<node oor:name="UI" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.UI/ColorScheme</value>
+ <value>/org.openoffice.Office.UI/ColorScheme</value>
</prop>
</node>
<node oor:name="Writer" oor:op="replace">
<prop oor:name="IncludedNodes">
<value>
- org.openoffice.Office.Writer
- org.openoffice.Office.WriterWeb
+ <it>/org.openoffice.Office.Writer</it>
+ <it>/org.openoffice.Office.WriterWeb</it>
</value>
</prop>
<prop oor:name="ExcludedNodes">
- <value>org.openoffice.Office.Writer/Wizard</value>
+ <value>/org.openoffice.Office.Writer/Wizard</value>
</prop>
</node>
</node>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
index b5232c21eb82..ffe5388caf76 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
@@ -782,13 +782,13 @@
<desc>MAX</desc>
</info>
</enumeration>
- <enumeration oor:value="5">
+ <enumeration oor:value="6">
<info>
<desc>IF</desc>
</info>
</enumeration>
</constraints>
- <value>224 226 222 223 5</value>
+ <value>224 226 222 223 6</value>
</prop>
<prop oor:name="AutoInput" oor:type="xs:boolean">
<!-- OldPath: Calc/Input -->
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index a1e203a29366..cb19bb01e1ba 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -5338,6 +5338,13 @@
</info>
<value>true</value>
</prop>
+ <prop oor:name="EmbedStandardFonts" oor:type="xs:boolean">
+ <info>
+ <author>pl</author>
+ <desc>Specifies whether to embed the 14 standard PDF fonts or not.</desc>
+ </info>
+ <value>false</value>
+ </prop>
<prop oor:name="FormsType" oor:type="xs:int">
<info>
<desc>Specifies the submitted format of a PDF form.</desc>
diff --git a/officecfg/registry/schema/org/openoffice/Setup.xcs b/officecfg/registry/schema/org/openoffice/Setup.xcs
index de8a64e2b0d8..a3d5ba6e5d21 100644
--- a/officecfg/registry/schema/org/openoffice/Setup.xcs
+++ b/officecfg/registry/schema/org/openoffice/Setup.xcs
@@ -53,11 +53,6 @@
<desc>an optional uno service that is called after files and nodes have been copied in order to perform custom migration actions. The service needs to support XInitializable and XJob interfaces according do http://specs.openoffice.org/appwide/migration/spec_migration.sxw</desc>
</info>
</prop>
- <prop oor:name="ServiceConfigComponents" oor:type="oor:string-list">
- <info>
- <desc>a list of config components that are to be passed to service</desc>
- </info>
- </prop>
<prop oor:name="IncludedFiles" oor:type="oor:string-list">
<info>
<desc>a list of wildcards relative to the old userdata origin that are to be copied</desc>
diff --git a/officecfg/util/alllang.xsl b/officecfg/util/alllang.xsl
index 339c6685fa0e..dafb45c85c11 100644
--- a/officecfg/util/alllang.xsl
+++ b/officecfg/util/alllang.xsl
@@ -100,7 +100,7 @@
<xsl:if test="@xml:lang=$locale and not(@install:module)">
<xsl:copy>
<xsl:apply-templates select = "@*" mode="locale"/>
- <xsl:value-of select="."/>
+ <xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:if>
</xsl:template>
@@ -275,7 +275,7 @@
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select = "@*"/>
- <xsl:value-of select="."/>
+ <xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
@@ -285,7 +285,7 @@
<xsl:if test="@xml:lang=$fallback-locale and not(@install:module)">
<xsl:copy>
<xsl:apply-templates select = "@*"/>
- <xsl:value-of select="."/>
+ <xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:if>
</xsl:template>
diff --git a/ooo_custom_images/broffice/introabout/about.png b/ooo_custom_images/broffice/introabout/about.png
index ffc8c7b1c85e..38d180afdc88 100755
--- a/ooo_custom_images/broffice/introabout/about.png
+++ b/ooo_custom_images/broffice/introabout/about.png
Binary files differ
diff --git a/ooo_custom_images/broffice/introabout/intro.png b/ooo_custom_images/broffice/introabout/intro.png
index 53f09f08d9c0..ba55331d6b77 100755
--- a/ooo_custom_images/broffice/introabout/intro.png
+++ b/ooo_custom_images/broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/classic/classic_images.tar.gz b/ooo_custom_images/classic/classic_images.tar.gz
index ecef0d4824be..53f81400484f 100644
--- a/ooo_custom_images/classic/classic_images.tar.gz
+++ b/ooo_custom_images/classic/classic_images.tar.gz
Binary files differ
diff --git a/ooo_custom_images/dev_broffice/introabout/intro.png b/ooo_custom_images/dev_broffice/introabout/intro.png
index 14fc3742f3ac..6f2ec0c8d690 100755
--- a/ooo_custom_images/dev_broffice/introabout/intro.png
+++ b/ooo_custom_images/dev_broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/dev_nologo/introabout/intro.png b/ooo_custom_images/dev_nologo/introabout/intro.png
index 59547887821d..72e6681b8635 100755
--- a/ooo_custom_images/dev_nologo/introabout/intro.png
+++ b/ooo_custom_images/dev_nologo/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/dev_nologo_broffice/introabout/intro.png b/ooo_custom_images/dev_nologo_broffice/introabout/intro.png
index cc526ef4f7a3..16951ee34a8e 100755
--- a/ooo_custom_images/dev_nologo_broffice/introabout/intro.png
+++ b/ooo_custom_images/dev_nologo_broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/nologo/introabout/intro.png b/ooo_custom_images/nologo/introabout/intro.png
index 0a8afe4a6293..cafcdf9330aa 100755
--- a/ooo_custom_images/nologo/introabout/intro.png
+++ b/ooo_custom_images/nologo/introabout/intro.png
Binary files differ
diff --git a/instsetoo_native/macosx/delzip b/ooo_custom_images/nologo_broffice/delzip
index e69de29bb2d1..e69de29bb2d1 100644
--- a/instsetoo_native/macosx/delzip
+++ b/ooo_custom_images/nologo_broffice/delzip
diff --git a/ooo_custom_images/nologo_broffice/framework/res/backing.png b/ooo_custom_images/nologo_broffice/framework/res/backing.png
new file mode 100644
index 000000000000..bbaf0ef2bc57
--- /dev/null
+++ b/ooo_custom_images/nologo_broffice/framework/res/backing.png
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/framework/res/backing_hc.png b/ooo_custom_images/nologo_broffice/framework/res/backing_hc.png
new file mode 100644
index 000000000000..0549dda178ee
--- /dev/null
+++ b/ooo_custom_images/nologo_broffice/framework/res/backing_hc.png
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/framework/res/backing_right.png b/ooo_custom_images/nologo_broffice/framework/res/backing_right.png
new file mode 100644
index 000000000000..355f4adf7c6a
--- /dev/null
+++ b/ooo_custom_images/nologo_broffice/framework/res/backing_right.png
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/framework/res/backing_right_hc.png b/ooo_custom_images/nologo_broffice/framework/res/backing_right_hc.png
new file mode 100644
index 000000000000..56736f2fc385
--- /dev/null
+++ b/ooo_custom_images/nologo_broffice/framework/res/backing_right_hc.png
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/introabout/intro.png b/ooo_custom_images/nologo_broffice/introabout/intro.png
index 56fd725ba6f6..4f8c83890b04 100755
--- a/ooo_custom_images/nologo_broffice/introabout/intro.png
+++ b/ooo_custom_images/nologo_broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/makefile.mk b/ooo_custom_images/nologo_broffice/makefile.mk
new file mode 100755
index 000000000000..d322a8e29f2a
--- /dev/null
+++ b/ooo_custom_images/nologo_broffice/makefile.mk
@@ -0,0 +1,20 @@
+#***********************************************************************
+#
+# Copyright 2004 Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+#*************************************************************************
+
+PRJ=..
+
+
+PRJNAME=ooo_custom_images
+TARGET=broffice_nologo
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/settings.pmk
+
+.INCLUDE : target.mk
+.INCLUDE : $(PRJ)$/target.pmk
+
diff --git a/ooo_custom_images/prj/build.lst b/ooo_custom_images/prj/build.lst
new file mode 100644
index 000000000000..57b9dd452da6
--- /dev/null
+++ b/ooo_custom_images/prj/build.lst
@@ -0,0 +1,4 @@
+oci ooo_custom_images : solenv NULL
+oci ooo_custom_images usr1 - all oci_mkout NULL
+oci ooo_custom_images\nologo_broffice nmake - all oci_nologo_broffice NULL
+
diff --git a/ooo_custom_images/prj/d.lst b/ooo_custom_images/prj/d.lst
new file mode 100644
index 000000000000..444e9b22491f
--- /dev/null
+++ b/ooo_custom_images/prj/d.lst
@@ -0,0 +1,2 @@
+mkdir: %COMMON_DEST%\bin%_EXT%\broffice_nologo
+..\%__SRC%\bin\broffice_nologo\*.zip %COMMON_DEST%\bin%_EXT%\broffice_nologo
diff --git a/ooo_custom_images/settings.pmk b/ooo_custom_images/settings.pmk
new file mode 100644
index 000000000000..ae95552ed21f
--- /dev/null
+++ b/ooo_custom_images/settings.pmk
@@ -0,0 +1,13 @@
+#***********************************************************************
+#
+# Copyright 2004 Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+#*************************************************************************
+
+ZIP1FLAGS += -r
+ZIP1TARGET = images_brand_$(TARGET)
+
+ZIP1LIST = * -x makefile.mk
+
diff --git a/ooo_custom_images/target.pmk b/ooo_custom_images/target.pmk
new file mode 100644
index 000000000000..6b78a397b231
--- /dev/null
+++ b/ooo_custom_images/target.pmk
@@ -0,0 +1,16 @@
+#***********************************************************************
+#
+# Copyright 2004 Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+#*************************************************************************
+
+.IF "$(depend)"==""
+ALLTAR : $(COMMONBIN)$/$(TARGET)$/images_brand$(ZIP1EXT)
+.ENDIF # "$(depend)"==""
+
+$(COMMONBIN)$/$(TARGET)$/images_brand$(ZIP1EXT) : $(COMMONBIN)$/images_brand_$(TARGET)$(ZIP1EXT)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
diff --git a/oovbaapi/genconstidl/makefile.mk b/oovbaapi/genconstidl/makefile.mk
index be9fc931f30a..078f4d09049e 100644
--- a/oovbaapi/genconstidl/makefile.mk
+++ b/oovbaapi/genconstidl/makefile.mk
@@ -34,11 +34,6 @@ PRJNAME=oovbaapi
.IF "$(L10N_framework)"==""
-.IF "$(ENABLE_VBA)"!="YES"
-dummy:
- @echo "not building vba..."
-.ENDIF
-
# symbol files of Microsoft API
MYSYMFILES = access.api vba.api adodb.api msforms.api word.api dao.api powerpoint.api excel.api stdole.api
diff --git a/oovbaapi/ooo/vba/constants/makefile.mk b/oovbaapi/ooo/vba/constants/makefile.mk
index a41f6e98a2ba..a731574363be 100644
--- a/oovbaapi/ooo/vba/constants/makefile.mk
+++ b/oovbaapi/ooo/vba/constants/makefile.mk
@@ -35,11 +35,6 @@ PACKAGE=org$/vba$/constants
.INCLUDE : $(PRJ)$/util$/makefile.pmk
-.IF "$(ENABLE_VBA)"!="YES"
-dummy:
- @echo "not building vba..."
-.ELSE
-
.IF "$(L10N_framework)"==""
# ------------------------------------------------------------------------
# I tried to use the IDLFILES target but it failed dismally
@@ -64,4 +59,3 @@ $(MYDBTARGET) : $(MYURDFILES) $(MYIDLFILES)
$(REGMERGE) $(OUT)$/ucr/constants.db /UCR @$(mktmp $(MYURDFILES))
.ENDIF
-.ENDIF
diff --git a/oovbaapi/ooo/vba/excel/makefile.mk b/oovbaapi/ooo/vba/excel/makefile.mk
index c31531af8349..01e26d4cb19b 100644
--- a/oovbaapi/ooo/vba/excel/makefile.mk
+++ b/oovbaapi/ooo/vba/excel/makefile.mk
@@ -34,11 +34,6 @@ PACKAGE=ooo$/vba$/Excel
# --- Settings -----------------------------------------------------
.INCLUDE : $(PRJ)$/util$/makefile.pmk
-.IF "$(ENABLE_VBA)"!="YES"
-dummy:
- @echo "not building vba..."
-.ENDIF
-
# ------------------------------------------------------------------------
diff --git a/oovbaapi/ooo/vba/makefile.mk b/oovbaapi/ooo/vba/makefile.mk
index e79d3481169c..7fc70303d942 100644
--- a/oovbaapi/ooo/vba/makefile.mk
+++ b/oovbaapi/ooo/vba/makefile.mk
@@ -34,11 +34,6 @@ PACKAGE=ooo$/vba
# --- Settings -----------------------------------------------------
.INCLUDE : $(PRJ)$/util$/makefile.pmk
-.IF "$(ENABLE_VBA)"!="YES"
-dummy:
- @echo "not building vba..."
-.ELSE
-
# ------------------------------------------------------------------------
.IF "$(L10N_framework)"=""
IDLFILES=\
@@ -71,4 +66,3 @@ IDLFILES=\
# ------------------------------------------------------------------
.ENDIF
.INCLUDE : target.mk
-.ENDIF
diff --git a/oovbaapi/ooo/vba/msforms/makefile.mk b/oovbaapi/ooo/vba/msforms/makefile.mk
index 61d2675af7fc..56ac4caf87cb 100644
--- a/oovbaapi/ooo/vba/msforms/makefile.mk
+++ b/oovbaapi/ooo/vba/msforms/makefile.mk
@@ -34,11 +34,6 @@ PACKAGE=ooo$/vba$/msforms
# --- Settings -----------------------------------------------------
.INCLUDE : $(PRJ)$/util$/makefile.pmk
-.IF "$(ENABLE_VBA)"!="YES"
-dummy:
- @echo "not building vba..."
-.ENDIF
-
# ------------------------------------------------------------------------
IDLFILES=\
diff --git a/oovbaapi/util/makefile.mk b/oovbaapi/util/makefile.mk
index 9c33577abfa9..5100327b4b7d 100644
--- a/oovbaapi/util/makefile.mk
+++ b/oovbaapi/util/makefile.mk
@@ -36,11 +36,6 @@ TARGET=oovbaapi_db
.INCLUDE : makefile.pmk
-.IF "$(ENABLE_VBA)"!="YES"
-dummy:
- @echo "not building vba..."
-.ENDIF
-
.IF "$(L10N_framework)"==""
# ------------------------------------------------------------------
UNOIDLDBFILES= \
diff --git a/oox/inc/oox/drawingml/shape.hxx b/oox/inc/oox/drawingml/shape.hxx
index 94fb6a4f29fc..f4f5a5ee68fe 100644
--- a/oox/inc/oox/drawingml/shape.hxx
+++ b/oox/inc/oox/drawingml/shape.hxx
@@ -123,7 +123,7 @@ public:
void setName( const rtl::OUString& rName ) { msName = rName; }
::rtl::OUString getName( ) { return msName; }
void setId( const rtl::OUString& rId ) { msId = rId; }
- void setSubType( sal_uInt32 nSubType ) { mnSubType = nSubType; }
+ void setSubType( sal_Int32 nSubType ) { mnSubType = nSubType; }
sal_Int32 getSubType() const { return mnSubType; }
void setSubTypeIndex( sal_uInt32 nSubTypeIndex ) { mnSubTypeIndex = nSubTypeIndex; }
sal_Int32 getSubTypeIndex() const { return mnSubTypeIndex; }
@@ -190,8 +190,8 @@ protected:
rtl::OUString msServiceName;
rtl::OUString msName;
rtl::OUString msId;
- sal_uInt32 mnSubType; // if this type is not zero, then the shape is a placeholder
- sal_uInt32 mnSubTypeIndex;
+ sal_Int32 mnSubType; // if this type is not zero, then the shape is a placeholder
+ sal_Int32 mnSubTypeIndex;
ShapeStyleRefMap maShapeStyleRefs;
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index dea4a6a51206..15c390a8162e 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -158,6 +158,9 @@ void Shape::addShape(
if ( xShapes.is() )
addChildren( rFilterBase, *this, pTheme, xShapes, pShapeRect ? *pShapeRect : awt::Rectangle( maPosition.X, maPosition.Y, maSize.Width, maSize.Height ), pShapeMap );
}
+ Reference< document::XActionLockable > xLockable( mxShape, UNO_QUERY );
+ if( xLockable.is() )
+ xLockable->removeActionLock();
}
catch( const Exception& )
{
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 7b8c1ca95d35..ed53992f944b 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -99,7 +99,7 @@ void PPTShape::addShape(
sServiceName = rtl::OUString();
}
break;
- case XML_obj :
+ case XML_obj :
{
const rtl::OUString sOutlinerShapeService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.presentation.OutlinerShape" ) );
sServiceName = sOutlinerShapeService;
diff --git a/oox/source/xls/pivottablebuffer.cxx b/oox/source/xls/pivottablebuffer.cxx
index d6214a843cb6..b4e3e1c52a65 100644
--- a/oox/source/xls/pivottablebuffer.cxx
+++ b/oox/source/xls/pivottablebuffer.cxx
@@ -1422,7 +1422,7 @@ void PivotTable::finalizeImport()
}
catch( Exception& )
{
- OSL_ENSURE( false, "PivotTable::finalizeImport - exception while creating the pivot table" );
+ OSL_ENSURE( false, "PivotTable::finalizeImport - exception while creating the DataPilot table" );
}
}
}
diff --git a/packimages/pack/image-sort.lst b/packimages/pack/image-sort.lst
index 43202b84486e..d7a615be3bda 100644
--- a/packimages/pack/image-sort.lst
+++ b/packimages/pack/image-sort.lst
@@ -89,7 +89,13 @@ uiconfig/modules/dbquery/toolbar/toolbar.xml
uiconfig/modules/dbrelation/toolbar/toolbar.xml
uiconfig/modules/dbtable/toolbar/toolbar.xml
uiconfig/modules/StartModule/toolbar/standardbar.xml
+uiconfig/modules/schart/toolbar/arrowshapes.xml
+uiconfig/modules/schart/toolbar/basicshapes.xml
+uiconfig/modules/schart/toolbar/calloutshapes.xml
+uiconfig/modules/schart/toolbar/flowchartshapes.xml
uiconfig/modules/schart/toolbar/standardbar.xml
+uiconfig/modules/schart/toolbar/starshapes.xml
+uiconfig/modules/schart/toolbar/symbolshapes.xml
uiconfig/modules/schart/toolbar/toolbar.xml
uiconfig/modules/scalc/toolbar/alignmentbar.xml
uiconfig/modules/scalc/toolbar/arrowshapes.xml
diff --git a/padmin/source/padialog.cxx b/padmin/source/padialog.cxx
index 3ea15e28141c..583e14c06caa 100644
--- a/padmin/source/padialog.cxx
+++ b/padmin/source/padialog.cxx
@@ -147,6 +147,11 @@ void PADialog::Init()
::psp::PrintFontManager& rFontManager( ::psp::PrintFontManager::get() );
if( ! rFontManager.checkImportPossible() )
m_aFontsPB.Enable( FALSE );
+ if( rFontManager.hasFontconfig() )
+ {
+ m_aFontsPB.Enable( FALSE );
+ m_aFontsPB.Show( FALSE );
+ }
}
PADialog::~PADialog()
diff --git a/postprocess/checkdeliver/checkdeliver.pl b/postprocess/checkdeliver/checkdeliver.pl
index d72aeb41e8c9..90a01be3a0a0 100644
--- a/postprocess/checkdeliver/checkdeliver.pl
+++ b/postprocess/checkdeliver/checkdeliver.pl
@@ -48,7 +48,7 @@ my $solverdir = '';
my $platform = '';
my $milestoneext = '';
my $local_env = 0;
-my $source_config = SourceConfig -> new();
+my $source_config = SourceConfig -> new($ENV{SOLARSRC});
my @exceptionmodlist = (
"postprocess",
"instset.*native",
diff --git a/postprocess/packregistry/makefile.mk b/postprocess/packregistry/makefile.mk
index 1f33001ae73a..863c31677a4c 100644
--- a/postprocess/packregistry/makefile.mk
+++ b/postprocess/packregistry/makefile.mk
@@ -283,7 +283,6 @@ MY_FILES_main = \
$(MY_MOD)/fcfg_internalgraphics_filters.xcu \
$(MY_MOD)/fcfg_internalgraphics_types.xcu \
$(MY_MOD)/org/openoffice/Office/Embedding-chart.xcu \
- $(MY_MOD)/org/openoffice/Office/Writer-javamail.xcu \
$(MY_MOD)/org/openoffice/Setup-start.xcu \
$(MY_MOD)/org/openoffice/TypeDetection/UISort-calc.xcu \
$(MY_MOD)/org/openoffice/TypeDetection/UISort-draw.xcu \
diff --git a/postprocess/prj/build.lst b/postprocess/prj/build.lst
index 28b3dcd659d9..3a0839f699bb 100644
--- a/postprocess/prj/build.lst
+++ b/postprocess/prj/build.lst
@@ -1,4 +1,4 @@
-po postprocess :: accessibility automation basctl bean fondu BINFILTER:binfilter chart2 configmgr CRASHREP:crashrep cui dbaccess desktop dtrans embeddedobj embedserv EPM:epm eventattacher extensions extras fileaccess filter forms fpicker helpcontent2 hwpfilter io JAVAINSTALLER2:javainstaller2 lingucomponent MATHMLDTD:MathMLDTD ODK:odk officecfg package padmin psprint_config remotebridges sc scaddins sccomp scp2 scripting sd setup_native slideshow starmath sw sysui testtools ucb UnoControls unoxml ure wizards xmerge xmlsecurity BITSTREAM_VERA_FONTS:bitstream_vera_fonts DICTIONARIES:dictionaries OOo:pyuno OOo:readlicense_oo SO:top unodevtools JFREEREPORT:jfreereport REPORTBUILDER:reportbuilder reportdesign SDEXT:sdext SWEXT:swext uui writerfilter oox MYSQLC:mysqlc NULL
+po postprocess :: accessibility automation basctl bean BINFILTER:binfilter chart2 configmgr CRASHREP:crashrep cui dbaccess desktop dtrans embeddedobj embedserv EPM:epm eventattacher extensions extras fileaccess filter forms fpicker helpcontent2 hwpfilter io JAVAINSTALLER2:javainstaller2 lingucomponent MATHMLDTD:MathMLDTD ODK:odk officecfg package padmin psprint_config remotebridges sc scaddins sccomp scp2 scripting sd setup_native slideshow starmath sw sysui testtools ucb UnoControls unoxml ure wizards xmerge xmlsecurity BITSTREAM_VERA_FONTS:bitstream_vera_fonts DICTIONARIES:dictionaries OOo:pyuno OOo:readlicense_oo SO:top unodevtools JFREEREPORT:jfreereport REPORTBUILDER:reportbuilder reportdesign SDEXT:sdext SWEXT:swext uui writerfilter oox MYSQLC:mysqlc NULL
po postprocess usr1 - all po_mkout NULL
po postprocess\checkxml nmake - all po_checkxml NULL
po postprocess\checkdeliver nmake - all po_checkdlv NULL
diff --git a/pyuno/zipcore/makefile.mk b/pyuno/zipcore/makefile.mk
index 9e546e7d4018..06241da2bfdb 100755
--- a/pyuno/zipcore/makefile.mk
+++ b/pyuno/zipcore/makefile.mk
@@ -55,7 +55,7 @@ PYTHONBINARY=$(DESTROOT)$/bin$/python$(EXECPOST)
.ENDIF
FINDLIBFILES_TMP:=$(subst,/,$/ \
- $(shell @$(FIND) $(SOLARLIBDIR)$/python -type f| $(GREP) -v .pyc |$(GREP) -v .py\~ |$(GREP) -v .orig ))
+ $(shell @$(FIND) $(SOLARLIBDIR)$/python -type f| $(GREP) -v "\.pyc" |$(GREP) -v "\.py~" |$(GREP) -v .orig | $(GREP) -v _failed))
FINDLIBFILES=$(subst,$(SOLARLIBDIR)$/python, $(FINDLIBFILES_TMP))
FILES=\
diff --git a/redland/README b/redland/README
index d01ae085cc66..87299ebf1fd4 100644
--- a/redland/README
+++ b/redland/README
@@ -22,7 +22,8 @@ Libraries: libraptor, librasqal, librdf
Patches:
There are several patches, most of which contain only hacks to get it to
build with OOo build system.
-There are also 3 patches that fix bugs in redland and are of general interest:
+There used to be also 3 patches here that fix bugs in redland and ought to be
+of general interest:
- redland-1.0.8.patch.free_null:
redland destructor functions don't check if argument is NULL
- redland-1.0.8.patch.storage_hashes_context_serialize_get_statement:
@@ -31,4 +32,7 @@ There are also 3 patches that fix bugs in redland and are of general interest:
- redland-1.0.8.patch.storage_hashes_list_duplicates:
hashes, list storage: if contexts are enabled, then it is possible to add
duplicate statements
+Attempts to upstream these patches failed for reasons upstream kept to
+themselves. Now these patches are replaced with workarounds in unoxml.
+Note to future maintainers: work around redland bugs in client code.
diff --git a/redland/redland/makefile.mk b/redland/redland/makefile.mk
index 9d516aa5e88b..d6acd4d8ea4d 100644
--- a/redland/redland/makefile.mk
+++ b/redland/redland/makefile.mk
@@ -59,9 +59,7 @@ OOO_PATCH_FILES= \
$(TARFILE_NAME).patch.win32
PATCH_FILES=$(OOO_PATCH_FILES) \
- $(TARFILE_NAME).patch.free_null \
- $(TARFILE_NAME).patch.storage_hashes_context_serialize_get_statement \
- $(TARFILE_NAME).patch.storage_hashes_list_duplicates
+
.IF "$(OS)"=="OS2"
BUILD_ACTION=dmake
diff --git a/redland/redland/redland-1.0.8.patch.free_null b/redland/redland/redland-1.0.8.patch.free_null
deleted file mode 100644
index 0524bb636b5e..000000000000
--- a/redland/redland/redland-1.0.8.patch.free_null
+++ /dev/null
@@ -1,174 +0,0 @@
---- misc/redland-1.0.8/librdf/rdf_digest.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_digest.c Thu Nov 6 12:44:39 2008
-@@ -248,6 +248,8 @@
- void
- librdf_free_digest(librdf_digest *digest)
- {
-+ if(!digest)
-+ return;
- if(digest->context)
- LIBRDF_FREE(digest_context, digest->context);
- if(digest->digest)
---- misc/redland-1.0.8/librdf/rdf_hash.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_hash.c Thu Nov 6 12:44:39 2008
-@@ -488,6 +488,8 @@
- void
- librdf_free_hash(librdf_hash* hash)
- {
-+ if(!hash)
-+ return;
- if(hash->context) {
- if(hash->is_open)
- librdf_hash_close(hash);
---- misc/redland-1.0.8/librdf/rdf_init.c Tue Nov 6 16:26:18 2007
-+++ misc/build/redland-1.0.8/librdf/rdf_init.c Mon Jun 16 15:55:51 2008
-@@ -178,6 +178,9 @@
- void
- librdf_free_world(librdf_world *world)
- {
-+ if(!world)
-+ return;
-+
- /* NOTE: raptor is always initialised as a parser and may
- * be also used as a serializer, but it is NOT finished
- * in the serializer_raptor registration. Therefore, always
---- misc/redland-1.0.8/librdf/rdf_list.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_list.c Thu Nov 6 12:44:39 2008
-@@ -106,6 +106,8 @@
- void
- librdf_free_list(librdf_list* list)
- {
-+ if(!list)
-+ return;
- LIBRDF_ASSERT_RETURN(list->iterator_count,
- "Iterators were active on freeing list", );
-
---- misc/redland-1.0.8/librdf/rdf_model.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_model.c Thu Nov 6 12:44:39 2008
-@@ -391,7 +391,8 @@
- librdf_iterator* iterator;
- librdf_model* m;
-
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(model, librdf_model);
-+ if(!model)
-+ return;
-
- if(--model->usage)
- return;
---- misc/redland-1.0.8/librdf/rdf_node.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_node.c Thu Nov 6 12:44:39 2008
-@@ -724,7 +724,8 @@
- librdf_world *world;
- #endif
-
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(node, librdf_node);
-+ if(!node)
-+ return;
-
- #ifdef WITH_THREADS
- world = node->world;
---- misc/redland-1.0.8/librdf/rdf_parser.c Tue Jul 1 08:09:58 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_parser.c Thu Nov 6 12:44:39 2008
-@@ -369,7 +369,8 @@
- void
- librdf_free_parser(librdf_parser *parser)
- {
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(parser, librdf_parser);
-+ if(!parser)
-+ return;
-
- if(parser->context) {
- if(parser->factory->terminate)
---- misc/redland-1.0.8/librdf/rdf_query.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_query.c Thu Nov 6 12:44:39 2008
-@@ -386,7 +386,8 @@
- void
- librdf_free_query(librdf_query* query)
- {
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(query, librdf_query);
-+ if(!query)
-+ return;
-
- if(--query->usage)
- return;
---- misc/redland-1.0.8/librdf/rdf_query_results.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_query_results.c Thu Nov 6 12:44:39 2008
-@@ -242,7 +242,8 @@
- void
- librdf_free_query_results(librdf_query_results* query_results)
- {
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(query_results, librdf_query_results);
-+ if(!query_results)
-+ return;
-
- if(query_results->query->factory->free_results)
- query_results->query->factory->free_results(query_results);
-@@ -634,6 +635,8 @@
- void
- librdf_free_query_results_formatter(librdf_query_results_formatter* formatter)
- {
-+ if(!formatter)
-+ return;
- if(formatter->query_results->query->factory->free_results_formatter)
- formatter->query_results->query->factory->free_results_formatter(formatter);
- }
---- misc/redland-1.0.8/librdf/rdf_serializer.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_serializer.c Thu Nov 6 12:44:39 2008
-@@ -371,7 +371,8 @@
- void
- librdf_free_serializer(librdf_serializer *serializer)
- {
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(serializer, librdf_serializer);
-+ if(!serializer)
-+ return;
-
- if(serializer->context) {
- if(serializer->factory->terminate)
---- misc/redland-1.0.8/librdf/rdf_statement.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_statement.c Thu Nov 6 12:44:39 2008
-@@ -253,7 +253,8 @@
- librdf_world *world;
- #endif
-
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(statement, librdf_statement);
-+ if(!statement)
-+ return;
-
- #ifdef WITH_THREADS
- world = statement->world;
---- misc/redland-1.0.8/librdf/rdf_storage.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_storage.c Thu Nov 6 12:44:39 2008
-@@ -610,7 +610,8 @@
- void
- librdf_free_storage(librdf_storage* storage)
- {
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(storage, librdf_storage);
-+ if(!storage)
-+ return;
-
- if(--storage->usage)
- return;
---- misc/redland-1.0.8/librdf/rdf_stream.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_stream.c Thu Nov 6 12:44:39 2008
-@@ -124,6 +124,9 @@
- void
- librdf_free_stream(librdf_stream* stream)
- {
-+ if(!stream)
-+ return;
-+
- if(stream->finished_method)
- stream->finished_method(stream->context);
-
---- misc/redland-1.0.8/librdf/rdf_uri.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_uri.c Thu Nov 6 12:44:39 2008
-@@ -407,7 +407,8 @@
- librdf_world *world;
- #endif
-
-- LIBRDF_ASSERT_OBJECT_POINTER_RETURN(uri, librdf_uri);
-+ if(!uri)
-+ return;
-
- #ifdef WITH_THREADS
- world = uri->world;
diff --git a/redland/redland/redland-1.0.8.patch.storage_hashes_context_serialize_get_statement b/redland/redland/redland-1.0.8.patch.storage_hashes_context_serialize_get_statement
deleted file mode 100644
index 8c72946d199f..000000000000
--- a/redland/redland/redland-1.0.8.patch.storage_hashes_context_serialize_get_statement
+++ /dev/null
@@ -1,35 +0,0 @@
---- misc/redland-1.0.8/librdf/rdf_storage_hashes.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_storage_hashes.c Thu Nov 6 12:44:39 2008
-@@ -1593,7 +1661,6 @@
- {
- librdf_storage_hashes_context_serialise_stream_context* scontext=(librdf_storage_hashes_context_serialise_stream_context*)context;
- librdf_hash_datum* v;
-- librdf_node** cnp=NULL;
-
- switch(flags) {
- case LIBRDF_ITERATOR_GET_METHOD_GET_OBJECT:
-@@ -1606,20 +1673,14 @@
- return scontext->context_node;
- }
-
-- /* current stuff is out of date - get new cached answers */
-- if(scontext->index_contexts) {
-- if(scontext->context_node)
-- librdf_free_node(scontext->context_node);
-- scontext->context_node=NULL;
-- cnp=&scontext->context_node;
-- }
--
-+ /* note: scontext->context_node is still valid */
-+
- librdf_statement_clear(&scontext->current);
-
- v=(librdf_hash_datum*)librdf_iterator_get_value(scontext->iterator);
--
-+
- /* decode value content and optional context */
-- if(!librdf_statement_decode_parts(&scontext->current, cnp,
-+ if(!librdf_statement_decode_parts(&scontext->current, NULL,
- (unsigned char*)v->data, v->size)) {
- return NULL;
- }
diff --git a/redland/redland/redland-1.0.8.patch.storage_hashes_list_duplicates b/redland/redland/redland-1.0.8.patch.storage_hashes_list_duplicates
deleted file mode 100644
index d2ef7e772230..000000000000
--- a/redland/redland/redland-1.0.8.patch.storage_hashes_list_duplicates
+++ /dev/null
@@ -1,170 +0,0 @@
---- misc/redland-1.0.8/librdf/rdf_storage_hashes.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_storage_hashes.c Thu Nov 6 12:44:39 2008
-@@ -1387,6 +1387,66 @@
- LIBRDF_STATEMENT_OBJECT);
- }
-
-+
-+/* return -1 on failure, 1 if context contains stmt, 0 if not */
-+static int
-+librdf_storage_hashes_context_contains_statement(librdf_storage* storage,
-+ librdf_node* context_node,
-+ librdf_statement* statement)
-+{
-+ librdf_storage_hashes_context* context=(librdf_storage_hashes_context*)storage->context;
-+ librdf_hash_datum key, value; /* on stack - not allocated */
-+ size_t size;
-+ int status;
-+
-+ if(context->contexts_index < 0) {
-+ librdf_log(storage->world, 0, LIBRDF_LOG_WARN, LIBRDF_FROM_STORAGE, NULL,
-+ "Storage was created without context support");
-+ return -1;
-+ }
-+
-+ /* ENCODE KEY */
-+ size=librdf_node_encode(context_node, NULL, 0);
-+ if (!size)
-+ return -1;
-+ key.data=(char*)LIBRDF_MALLOC(cstring, size);
-+ if (!key.data)
-+ return -1;
-+ key.size=librdf_node_encode(context_node,
-+ (unsigned char*)key.data, size);
-+ if (!key.size) {
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+
-+ /* ENCODE VALUE */
-+ size=librdf_statement_encode(statement, NULL, 0);
-+ if (!size) {
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+ value.data=(char*)LIBRDF_MALLOC(cstring, size);
-+ if (!value.data) {
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+ value.size=librdf_statement_encode(statement, (unsigned char*)value.data, size);
-+ if (!value.size) {
-+ LIBRDF_FREE(data, value.data);
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+
-+ status=librdf_hash_exists(context->hashes[context->contexts_index], &key, &value);
-+ LIBRDF_FREE(data, value.data);
-+ LIBRDF_FREE(data, key.data);
-+
-+ /* DO NOT free statement, ownership was not passed in */
-+ return status;
-+}
-+
-+
-+
- /**
- * librdf_storage_hashes_context_add_statement:
- * @storage: #librdf_storage object
-@@ -1412,7 +1472,15 @@
- "Storage was created without context support");
- return 1;
- }
--
-+
-+ /* Do not add duplicate statements */
-+ status=librdf_storage_hashes_context_contains_statement(storage, context_node, statement);
-+ if(status)
-+ if(status < 0)
-+ return 1;
-+ else
-+ return 0;
-+
- if(librdf_storage_hashes_add_remove_statement(storage,
- statement, context_node, 1))
- return 1;
---- misc/redland-1.0.8/librdf/rdf_storage_list.c Tue Jul 1 05:10:26 2008
-+++ misc/build/redland-1.0.8/librdf/rdf_storage_list.c Thu Nov 6 12:44:39 2008
-@@ -457,6 +457,64 @@
- }
-
-
-+/* return -1 on failure, 1 if context contains stmt, 0 if not */
-+static int
-+librdf_storage_list_context_contains_statement(librdf_storage* storage,
-+ librdf_node* context_node,
-+ librdf_statement* statement)
-+{
-+ librdf_storage_list_context* context=(librdf_storage_list_context*)storage->context;
-+ librdf_hash_datum key, value; /* on stack - not allocated */
-+ size_t size;
-+ int status;
-+
-+ if(!context->index_contexts) {
-+ librdf_log(storage->world, 0, LIBRDF_LOG_WARN, LIBRDF_FROM_STORAGE, NULL,
-+ "Storage was created without context support");
-+ return -1;
-+ }
-+
-+ /* ENCODE KEY */
-+ size=librdf_node_encode(context_node, NULL, 0);
-+ if (!size)
-+ return -1;
-+ key.data=(char*)LIBRDF_MALLOC(cstring, size);
-+ if (!key.data)
-+ return -1;
-+ key.size=librdf_node_encode(context_node,
-+ (unsigned char*)key.data, size);
-+ if (!key.size) {
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+
-+ /* ENCODE VALUE */
-+ size=librdf_statement_encode(statement, NULL, 0);
-+ if (!size) {
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+ value.data=(char*)LIBRDF_MALLOC(cstring, size);
-+ if (!value.data) {
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+ value.size=librdf_statement_encode(statement, (unsigned char*)value.data, size);
-+ if (!value.size) {
-+ LIBRDF_FREE(data, value.data);
-+ LIBRDF_FREE(data, key.data);
-+ return -1;
-+ }
-+
-+ status=librdf_hash_exists(context->contexts, &key, &value);
-+ LIBRDF_FREE(data, value.data);
-+ LIBRDF_FREE(data, key.data);
-+
-+ /* DO NOT free statement, ownership was not passed in */
-+ return status;
-+}
-+
-+
- /**
- * librdf_storage_list_context_add_statement:
- * @storage: #librdf_storage object
-@@ -483,7 +541,15 @@
- "Storage was created without context support");
- return 1;
- }
--
-+
-+ /* Do not add duplicate statements */
-+ status=librdf_storage_list_context_contains_statement(storage, context_node, statement);
-+ if(status)
-+ if(status < 0)
-+ return 1;
-+ else
-+ return 0;
-+
- /* Store statement + node in the storage_list */
- sln=(librdf_storage_list_node*)LIBRDF_MALLOC(librdf_storage_list_node, sizeof(librdf_storage_list_node));
- if(!sln)
diff --git a/reportbuilder/images/em47.png b/reportbuilder/images/em47.png
deleted file mode 100644
index cf3fe5f0d598..000000000000
--- a/reportbuilder/images/em47.png
+++ /dev/null
Binary files differ
diff --git a/reportbuilder/images/em47_hc.png b/reportbuilder/images/em47_hc.png
deleted file mode 100644
index 535a6bfdff4f..000000000000
--- a/reportbuilder/images/em47_hc.png
+++ /dev/null
Binary files differ
diff --git a/reportbuilder/util/component.txt b/reportbuilder/util/component.txt
index 3b6ba3156efc..21a1f1e2d145 100644..100755
--- a/reportbuilder/util/component.txt
+++ b/reportbuilder/util/component.txt
@@ -1 +1 @@
-Create with the Oracle Report Builder stylish, smart-looking database reports. The flexible report editor can define group and page headers as well as group and page footers and even calculation fields are available to accomplish complex database reports.
+Create with the Report Builder stylish, smart-looking database reports. The flexible report editor can define group and page headers as well as group and page footers and even calculation fields are available to accomplish complex database reports.
diff --git a/reportbuilder/util/description.xml b/reportbuilder/util/description.xml
index a4031236bd2b..a96d41bbe6af 100644..100755
--- a/reportbuilder/util/description.xml
+++ b/reportbuilder/util/description.xml
@@ -3,8 +3,7 @@
xmlns:d="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink">
<display-name>
- <name lang="en-US">Oracle Report Builder</name>
- <!-- <name lang="en-US">Sun(TM) Report Builder</name> -->
+ <name lang="en-US">Report Builder</name>
</display-name>
<registration>
<simple-license accept-by="admin" default-license-id="lic-en-US" suppress-if-required="true" >
@@ -20,8 +19,8 @@
<name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
</publisher>
<icon>
- <default xlink:href="images/em47.png" />
- <high-contrast xlink:href="images/em47_hc.png" />
+ <default xlink:href="images/extension_32.png" />
+ <high-contrast xlink:href="images/extension_32_h.png" />
</icon>
<extension-description>
<src xlink:href="help/component.txt" lang="en" />
diff --git a/reportbuilder/util/makefile.mk b/reportbuilder/util/makefile.mk
index 7ff8f64e7938..c52e85841f68 100644..100755
--- a/reportbuilder/util/makefile.mk
+++ b/reportbuilder/util/makefile.mk
@@ -41,8 +41,8 @@ EXTENSION_VERSION_BASE=1.2.1
.IF "$(L10N_framework)"==""
# ------------------------------------------------------------------
# calready set in util$/makefile.pmk
-# EXTENSIONNAME:=oracle-report-builder
-EXTENSION_ZIPNAME:=oracle-report-builder
+# EXTENSIONNAME:=report-builder
+EXTENSION_ZIPNAME:=report-builder
# create Extension -----------------------------
@@ -76,8 +76,8 @@ COMPONENT_OTR_FILES= \
$(EXTENSIONDIR)$/template$/en-US$/wizard$/report$/default.otr
COMPONENT_IMAGES= \
- $(EXTENSIONDIR)$/images$/em47.png \
- $(EXTENSIONDIR)$/images$/em47_hc.png
+ $(EXTENSIONDIR)$/images$/extension_32.png \
+ $(EXTENSIONDIR)$/images$/extension_32_h.png
COMPONENT_HTMLFILES = $(EXTENSIONDIR)$/THIRDPARTYREADMELICENSE.html \
$(EXTENSIONDIR)$/readme_en-US.html \
@@ -133,7 +133,7 @@ $(EXTENSIONDIR)$/readme_en-US.% : $(PRJ)$/license$/readme_en-US.%
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
-$(EXTENSIONDIR)$/images$/%.png : $(PRJ)$/images$/%.png
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
diff --git a/reportbuilder/util/makefile.pmk b/reportbuilder/util/makefile.pmk
index 566132247f9f..566132247f9f 100644..100755
--- a/reportbuilder/util/makefile.pmk
+++ b/reportbuilder/util/makefile.pmk
diff --git a/rsc/inc/rsctools.hxx b/rsc/inc/rsctools.hxx
index 287a079f63c8..3a3eff653cd7 100644
--- a/rsc/inc/rsctools.hxx
+++ b/rsc/inc/rsctools.hxx
@@ -68,7 +68,6 @@ class RscChar
{
public:
static char * MakeUTF8( char * pStr, UINT16 nTextEncoding );
- static char * MakeUTF8FromL( char * pStr );
};
/****************** R s c P t r P t r ************************************/
diff --git a/rsc/source/tools/rscchar.cxx b/rsc/source/tools/rscchar.cxx
index ca421dde372a..c23022e4222e 100644
--- a/rsc/source/tools/rscchar.cxx
+++ b/rsc/source/tools/rscchar.cxx
@@ -194,136 +194,3 @@ char * RscChar::MakeUTF8( char * pStr, UINT16 nTextEncoding )
return pUtf8;
};
-
-/*************************************************************************
-|*
-|* RscChar::MakeChar()
-|*
-|* Beschreibung Der String wird nach C-Konvention umgesetzt
-|* Ersterstellung MM 20.03.91
-|* Letzte Aenderung MM 20.03.91
-|*
-*************************************************************************/
-char * RscChar::MakeUTF8FromL( char * pStr )
-{
- sal_Size nUniPos = 0;
- sal_Unicode * pUniCode = new sal_Unicode[ strlen( pStr ) + 1 ];
-
- char cOld = '1';
- while( cOld != 0 )
- {
- sal_Unicode c;
- if( *pStr == '\\' )
- {
- ++pStr;
- switch( *pStr )
- {
- case 'a':
- c = '\a';
- break;
- case 'b':
- c = '\b';
- break;
- case 'f':
- c = '\f';
- break;
- case 'n':
- c = '\n';
- break;
- case 'r':
- c = '\r';
- break;
- case 't':
- c = '\t';
- break;
- case 'v':
- c = '\v';
- break;
- case '\\':
- c = '\\';
- break;
- case '?':
- c = '\?';
- break;
- case '\'':
- c = '\'';
- break;
- case '\"':
- c = '\"';
- break;
- default:
- {
- if( '0' <= *pStr && '7' >= *pStr )
- {
- UINT32 nChar = 0;
- int i = 0;
- while( '0' <= *pStr && '7' >= *pStr && i != 6 )
- {
- nChar = nChar * 8 + (BYTE)*pStr - (BYTE)'0';
- ++pStr;
- i++;
- }
- if( nChar > 0xFFFF )
- // Wert zu gross, oder kein 3 Ziffern
- return( FALSE );
- c = (UINT16)nChar;
- pStr--;
- }
- else if( 'x' == *pStr || 'X' == *pStr )
- {
- UINT32 nChar = 0;
- int i = 0;
- ++pStr;
- while( isxdigit( *pStr ) && i != 4 )
- {
- if( isdigit( *pStr ) )
- nChar = nChar * 16 + (BYTE)*pStr - (BYTE)'0';
- else if( isupper( *pStr ) )
- nChar = nChar * 16 + (BYTE)*pStr - (BYTE)'A' +10;
- else
- nChar = nChar * 16 + (BYTE)*pStr - (BYTE)'a' +10;
- ++pStr;
- i++;
- }
- c = (UINT16)nChar;
- pStr--;
- }
- else
- c = *pStr;
- };
- }
- }
- else
- c = *pStr;
-
- pUniCode[ nUniPos++ ] = c;
- cOld = *pStr;
- pStr++;
- }
-
- // factor fo 6 is the maximum size of an UNICODE character as utf8
- sal_Size nMaxUtf8Len = nUniPos * 6;
- if( nUniPos * 6 > 0x0FFFFF )
- RscExit( 10 );
-
- char * pUtf8 = (char *)rtl_allocateMemory( nMaxUtf8Len );
- rtl_TextToUnicodeConverter hConv = rtl_createUnicodeToTextConverter( RTL_TEXTENCODING_UTF8 );
-
- sal_uInt32 nInfo;
- sal_Size nSrcCvtBytes;
- rtl_convertUnicodeToText( hConv, 0,
- pUniCode, nUniPos,
- pUtf8, nMaxUtf8Len,
- RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT
- | RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT
- | RTL_UNICODETOTEXT_FLAGS_FLUSH,
- &nInfo,
- &nSrcCvtBytes );
-
- rtl_destroyUnicodeToTextConverter( hConv );
-
- delete[] pUniCode;
-
- return pUtf8;
-};
-
diff --git a/sal/osl/unx/signal.c b/sal/osl/unx/signal.c
index c5141fa02260..5563375d9567 100644
--- a/sal/osl/unx/signal.c
+++ b/sal/osl/unx/signal.c
@@ -74,10 +74,14 @@
#include "file_path_helper.h"
#define ACT_IGNORE 1
-#define ACT_ABORT 2
-#define ACT_EXIT 3
-#define ACT_SYSTEM 4
-#define ACT_HIDE 5
+#define ACT_EXIT 2
+#define ACT_SYSTEM 3
+#define ACT_HIDE 4
+#ifdef SAL_ENABLE_CRASH_REPORT
+# define ACT_ABORT 5
+#else
+# define ACT_ABORT ACT_SYSTEM
+#endif
#define MAX_PATH_LEN 2048
@@ -556,7 +560,7 @@ static int ReportCrash( int Signal )
if (Signals[i].Signal == Signal && Signals[i].Action == ACT_ABORT )
{
int ret;
- char szShellCmd[512];
+ char szShellCmd[512] = { '\0' };
char *pXMLTempName = NULL;
char *pStackTempName = NULL;
char *pChecksumTempName = NULL;
@@ -728,68 +732,57 @@ static int ReportCrash( int Signal )
if ( checksumout )
fclose( checksumout );
-#if defined( LINUX )
- if ( pXMLTempName && pChecksumTempName && pStackTempName )
- snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "crash_report -p %d -s %d -xml %s -chksum %s -stack %s%s",
- getpid(),
- Signal,
- pXMLTempName,
- pChecksumTempName,
- pStackTempName,
- bAutoCrashReport ? " -noui -send" : " -noui" );
-#elif defined( MACOSX )
if ( pXMLTempName && pChecksumTempName && pStackTempName )
+#endif /* INCLUDE_BACKTRACE */
{
- rtl_uString *crashrep_url = NULL;
- rtl_uString *crashrep_path = NULL;
- rtl_String *crashrep_path_system = NULL;
-
- rtl_string2UString( &crashrep_url, RTL_CONSTASCII_USTRINGPARAM("$BRAND_BASE_DIR/program/crash_report.bin"), OSTRING_TO_OUSTRING_CVTFLAGS );
- rtl_bootstrap_expandMacros( &crashrep_url );
- osl_getSystemPathFromFileURL( crashrep_url, &crashrep_path );
+ rtl_uString * crashrep_url = NULL;
+ rtl_uString * crashrep_path = NULL;
+ rtl_String * crashrep_path_system = NULL;
+ rtl_string2UString(
+ &crashrep_url,
+ RTL_CONSTASCII_USTRINGPARAM(
+ "$BRAND_BASE_DIR/program/crashrep"),
+ OSTRING_TO_OUSTRING_CVTFLAGS);
+ rtl_bootstrap_expandMacros(&crashrep_url);
+ osl_getSystemPathFromFileURL(crashrep_url, &crashrep_path);
rtl_uString2String(
&crashrep_path_system,
- rtl_uString_getStr( crashrep_path ),
- rtl_uString_getLength( crashrep_path ),
+ rtl_uString_getStr(crashrep_path),
+ rtl_uString_getLength(crashrep_path),
osl_getThreadTextEncoding(),
- RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR | RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR );
-
- rtl_uString_release( crashrep_url );
- rtl_uString_release( crashrep_path );
-
+ (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR
+ | RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR));
+ rtl_uString_release(crashrep_url);
+ rtl_uString_release(crashrep_path);
+#if defined INCLUDE_BACKTRACE && (defined LINUX || defined MACOSX)
snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "%s -p %d -s %d -xml %s -chksum %s -stack %s%s",
- rtl_string_getStr( crashrep_path_system ),
+ "%s -p %d -s %d -xml %s -chksum %s -stack %s -noui%s",
+ rtl_string_getStr(crashrep_path_system),
getpid(),
Signal,
pXMLTempName,
pChecksumTempName,
pStackTempName,
- bAutoCrashReport ? " -noui -send" : " -noui" );
-
- rtl_string_release( crashrep_path_system );
-
- printf( "%s\n", szShellCmd );
- }
-#elif defined ( SOLARIS )
- if ( pXMLTempName && pChecksumTempName )
+ bAutoCrashReport ? " -send" : "" );
+#elif defined INCLUDE_BACKTRACE && defined SOLARIS
snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "crash_report -p %d -s %d -xml %s -chksum %s%s",
+ "%s -p %d -s %d -xml %s -chksum %s -noui%s",
+ rtl_string_getStr(crashrep_path_system),
getpid(),
Signal,
pXMLTempName,
pChecksumTempName,
- bAutoCrashReport ? " -noui -send" : " -noui" );
+ bAutoCrashReport ? " -send" : "" );
+#else
+ snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
+ "%s -p %d -s %d -noui%s",
+ rtl_string_getStr(crashrep_path_system),
+ getpid(), Signal, bAutoCrashReport ? " -send" : "" );
#endif
+ rtl_string_release(crashrep_path_system);
+ }
-#else /* defined INCLUDE BACKTRACE */
- snprintf( szShellCmd, sizeof(szShellCmd)/sizeof(szShellCmd[0]),
- "crash_report -p %d -s %d%s", getpid(), Signal, bAutoCrashReport ? " -noui -send" : " -noui" );
-#endif /* defined INCLUDE BACKTRACE */
-
-
- ret = system( szShellCmd );
+ ret = szShellCmd[0] == '\0' ? -1 : system( szShellCmd );
if ( pXMLTempName )
unlink( pXMLTempName );
diff --git a/sal/rtl/source/macro.hxx b/sal/rtl/source/macro.hxx
index a48918668f83..50f0d7de924e 100644
--- a/sal/rtl/source/macro.hxx
+++ b/sal/rtl/source/macro.hxx
@@ -89,6 +89,8 @@ this is inserted for the case that the preprocessor ignores error
# define THIS_ARCH "M68K"
#elif defined HPPA
# define THIS_ARCH "HPPA"
+#elif defined AXP
+# define THIS_ARCH "ALPHA"
#endif
#if ! defined THIS_ARCH
diff --git a/sal/typesconfig/typesconfig.c b/sal/typesconfig/typesconfig.c
index 8223c80a5856..708837be926b 100644
--- a/sal/typesconfig/typesconfig.c
+++ b/sal/typesconfig/typesconfig.c
@@ -160,7 +160,7 @@ int check( TestFunc func, Type eT, void* p )
|* Letzte Aenderung
|*
*************************************************************************/
-#if defined(IA64) || defined(ARM32) || defined(HPPA)
+#if defined(IA64) || defined(ARM32) || defined(HPPA) || defined(AXP)
int forceerror()
{
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 85567a2a656d..7027b55259d0 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -373,7 +373,7 @@ public:
/// Including current, may return -1
SCsROW GetNextUnprotected( SCROW nRow, BOOL bUp ) const;
- void GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollection& rStrings);
+ void GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollection& rStrings, bool& rHasDates);
BOOL GetDataEntries(SCROW nRow, TypedScStrCollection& rStrings, BOOL bLimit);
//UNUSED2008-05 SCROW NoteCount( SCROW nMaxRow = MAXROW ) const;
diff --git a/sc/inc/dbcolect.hxx b/sc/inc/dbcolect.hxx
index 488263bebf53..72356683d1a4 100644
--- a/sc/inc/dbcolect.hxx
+++ b/sc/inc/dbcolect.hxx
@@ -84,6 +84,7 @@ private:
SCCOLROW nQueryField[MAXQUERY];
ScQueryOp eQueryOp[MAXQUERY];
BOOL bQueryByString[MAXQUERY];
+ bool bQueryByDate[MAXQUERY];
String* pQueryStr[MAXQUERY];
double nQueryVal[MAXQUERY];
ScQueryConnect eQueryConnect[MAXQUERY];
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 17ec77b0f9a7..e9bbfbd8b40d 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1425,9 +1425,9 @@ public:
void GetUpperCellString(SCCOL nCol, SCROW nRow, SCTAB nTab, String& rStr);
BOOL GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
- TypedScStrCollection& rStrings, bool bFilter = false );
+ bool bFilter, TypedScStrCollection& rStrings, bool& rHasDates);
SC_DLLPUBLIC BOOL GetFilterEntriesArea( SCCOL nCol, SCROW nStartRow, SCROW nEndRow,
- SCTAB nTab, TypedScStrCollection& rStrings );
+ SCTAB nTab, TypedScStrCollection& rStrings, bool& rHasDates );
BOOL GetDataEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
TypedScStrCollection& rStrings, BOOL bLimit = FALSE );
BOOL GetFormulaEntries( TypedScStrCollection& rStrings );
diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
index b85205741334..23668aa6813d 100644
--- a/sc/inc/global.hxx
+++ b/sc/inc/global.hxx
@@ -802,6 +802,7 @@ struct ScQueryEntry
{
BOOL bDoQuery;
BOOL bQueryByString;
+ bool bQueryByDate;
SCCOLROW nField;
ScQueryOp eOp;
ScQueryConnect eConnect;
diff --git a/sc/inc/segdefs_.hxx b/sc/inc/segdefs_.hxx
deleted file mode 100644
index 10e020d9da60..000000000000
--- a/sc/inc/segdefs_.hxx
+++ /dev/null
@@ -1,4985 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define appmain_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain_03 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain_04 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain_22 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain_23 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain_2e SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain7_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain8_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain3_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain5_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appmain4_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define msgpool_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define inputhdl_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define inputhdl_0d SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define uiitems_16 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define uiitems_22 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define uiitems_28 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define uiitems_32 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define uiitems_40 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define impex_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define editsh_0a SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define global_0f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define global_85 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define docoptio_0b SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define docoptio_0e SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define viewopti_0f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define viewopti_12 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define printopt_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define printopt_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define printopt_0f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define printopt_12 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appoptio_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appoptio_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define appoptio_09 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define global2_1f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define global2_23 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define global2_37 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define compiler_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define adiasync_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define docpool_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column_0f SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_48 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_63 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_2d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin4_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin_22 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin4_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_24 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin4_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global2_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global2_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fillinfo_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_5c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_53 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_25 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin4_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_54 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_5a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_5d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_60 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabview3_47 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin3_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_5f SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define colrowba_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_27 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabview4_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_17 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table1_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabview4_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_62 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_64 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define documen3_2e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabview4_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define hdrcont_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define colrowba_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define colrowba_0c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin3_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output2_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_8c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output2_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define patattr_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_28 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_26 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabview3_48 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabvwsha_05 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_25 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_47 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_40 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column3_16 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define appmain_50 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabvwsh9_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define appmain3_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_26 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_29 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_24 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_09 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_26 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define appmain_3c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_28 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global_92 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputhdl_27 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global2_4c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_32 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_31 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_42 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_3d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column3_12 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column_1a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_41 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_48 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_49 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_64 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define attarray_05 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define attarray_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define attarray_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define column_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_4b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_7b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabvwsha_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_05 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin_23 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_59 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_46 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewopti_13 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabview3_35 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_1c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_1d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define inputwin_22 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabvwsh5_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tabvwsh4_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin3_12 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_32 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewdata_57 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin3_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output3_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin3_14 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_61 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define table2_65 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_13 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_14 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_17 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_1a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_1b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_1c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_1e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global2_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define output_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_7d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define document_7e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define documen6_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define gridwin3_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define stlsheet_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define documen8_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define global_07 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define tabvwsha_02 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define global_88 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define impex_09 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define applink_04 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define docsh_3b SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define gridwin_08 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define documen3_25 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define patattr_04 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define document_84 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define viewdata_3f SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define patattr_01 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define document_2e SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define document_2a SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define tabvwsh7_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewfunc_38 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define document_6d SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define table2_88 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define column_64 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define document_a1 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docsh4_11 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docsh_2b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docsh2_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define stlpool_06 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docsh4_0d SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define global_50 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_2b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputwin_14 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputwin_20 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_08 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_1b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_1a SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_0c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define appmain_0b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputwin_2c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputwin_2b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define appmain_09 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_0b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabvwsh4_1a SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define gridwin_0f SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabview5_0c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define appmain3_0b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define gridwin3_04 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define gridwin3_15 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabvwshd_03 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputhdl_03 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputwin_1e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define inputwin_23 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabview_13 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewdata_1b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define editutil_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define document_56 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define table1_0e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define column2_08 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabvwsh4_1b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docsh_16 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define documen3_45 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabview3_34 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define tabvwsh4_1e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define rangeutl_04 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewfunc_0b SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define document_75 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define table2_96 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define column_70 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define attarray_09 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define tabvwsh8_04 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define msgpool_04 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define tabvwsh8_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define document_a9 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define appmain3_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define gridwin_0e SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define gridwin_0b SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define gridwin_39 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define viewdata_2e SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define gridwin3_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define gridwin_26 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define colrowba_09 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define hdrcont_08 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define hdrcont_05 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define hdrcont_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define colrowba_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define colrowba_04 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define viewdata_1f SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define dbcolect_0f SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define documen3_05 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define documen3_37 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define tabvwsh6_03 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define inputwin_0d SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define table1_28 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define column2_23 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define attarray_2f SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define column2_2a SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define viewfun2_1c SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define document_83 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define attarray_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define document_82 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define column_03 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define table1_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define document_06 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define global2_07 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define global2_09 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define markarr_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh3_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh_14 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh3_16 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define tabvwsh4_16 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh_38 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh_39 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh_40 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docsh2_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define documen9_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define attarray_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define column_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define documen6_03 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define markarr_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define column3_06 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define table1_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define collect_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define collect_15 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define documen2_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define global_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define collect_17 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define adiasync_06 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define docpool_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define attrib_59 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define attrib_5a SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define attrib_6f SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define tabvwsh3_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define tabview3_6c SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define viewdata_3a SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define tabvwsh4_07 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define document_91 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define stlsheet_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define table2_95 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define column_6f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define attarray_2a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define table1_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define document_08 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabcont_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabcont_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define document_16 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabvwshf_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh6_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview3_44 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabcont_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview3_43 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define document_07 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabvwsh4_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh_41 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen3_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define document_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain_58 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabvwsh4_15 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh4_0f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh4_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define document_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define table1_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define olkact_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain_29 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define olkact_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabvwsh4_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview5_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define select_0f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define select_19 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_18 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_11 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define olinewin_0e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define olinewin_0f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen3_0c SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_69 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_07 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_0c SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain_28 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define select_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewdata_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewopti_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen8_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen2_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define collect_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewopti_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewopti_18 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewopti_19 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewopti_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen3_35 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh3_15 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen3_33 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen8_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain7_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docoptio_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docoptio_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define collect_0c SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen3_39 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview5_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define olinewin_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define documen3_34 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewdata_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain7_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewopti_17 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define global_8b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputhdl_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define patattr_09 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputhdl_07 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputhdl_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define document_95 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define table2_98 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_0e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_28 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define inputwin_08 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docoptio_12 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define printopt_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appoptio_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain7_08 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define select_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define select_0e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docpool_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define attrib_6d SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define attrib_8f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define patattr_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define attrib_26 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define attrib_30 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define attrib_34 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define stlpool_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define bcaslot_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define appmain7_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define cbuttonw_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define cbuttonw_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define gridwin_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define hdrcont_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define colrowba_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define colrowba_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabsplit_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabsplit_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewdata_4a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define viewdata_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview5_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define tabview_75 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define docsh3_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define gridwin5_01 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define colrowba_05 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define gridwin_29 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define gridwin_28 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define document_b3 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define viewfun2_1a SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define column_01 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define docsh6_05 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define tabvwshb_04 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define galwrap_02 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define msgpool_05 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define gridwin_2e SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define tabview2_10 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define tabvwsh4_09 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define gridwin3_10 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define tabview_6d SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define tabvwsh2_02 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define viewdata_44 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define tabview2_0b SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define docoptio_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define documen8_06 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define viewopti_14 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define viewdata_06 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define viewdata_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define viewdata_1d SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define tabview5_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define cbuttonw_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define gridwin_04 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define hdrcont_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define colrowba_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define colrowba_0b SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define tabsplit_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define tabcont_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define olinewin_04 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define editutil_0b SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define attrib_76 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define editutil_0f SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define attrib_6e SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define editutil_1b SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define attrib_72 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define editutil_13 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define attrib_77 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define attrib_75 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define editutil_17 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define inputhdl_1c SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define tabview5_0b SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define uiitems_13 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define docsh3_05 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define uiitems_14 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define viewdata_37 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define viewdata_38 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define viewdata_3b SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define output_03 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define appmain_0a SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define tabview_06 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define tbxctl_02 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define inputhdl_19 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define attrib_5c SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define documen9_09 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define documen9_0a SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define stlpool_03 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define stlsheet_01 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define stlsheet_03 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define documen9_10 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define editutil_0c SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define editutil_1c SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define attrib_83 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define attrib_91 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define document_92 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define patattr_0e SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define tabvwsh4_03 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define viewfunc_31 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define dbfunc_01 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define stlpool_02 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define editutil_1e SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define attrib_71 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define editutil_0e SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define editutil_1a SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define editutil_12 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define tabvwsh4_0b SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define viewdata_48 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define tabview_73 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define docsh_15 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define inputwin_0f SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define bcaslot_0c SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define stlsheet_02 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define stlsheet_06 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define docsh6_02 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define documen3_41 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define documen3_42 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define documen3_43 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define inputwin_02 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define inputwin_16 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define inputwin_17 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define inputhdl_22 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define appmain9_01 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define tabvwsh4_1f SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define editsh_02 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
-#define tabview_05 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define viewfunc_33 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define dbfunc_03 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define target_01 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define appmain3_0d SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define appmain3_0e SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define appmain3_0f SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define global2_19 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define global2_1b SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define editutil_1f SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define global2_22 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define drtxtob2_04 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define uiitems_38 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define global2_27 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
-#define uiitems_1c SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
-#define tbxctl_01 SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
-#define editsh_01 SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
-#define appmain_37 SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
-#define global_93 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define global_94 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define attarray_07 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define attarray_08 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column_13 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define patattr_16 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define documen8_0b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define scdebug_02 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define scdebug_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column2_0d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define table5_08 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column2_0c SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column2_0b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define document_3d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define table2_39 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column3_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column3_03 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define documen7_07 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define cell_38 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define document_49 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column3_0c SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define cellform_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define table2_43 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define table3_75 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column3_18 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define cell_02 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define cell_03 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define drwlayer_0a SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define compiler_17 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define token_24 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define token_0d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define token_53 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define compiler_1b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define compiler_1d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define table4_06 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column2_0a SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column_04 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define column_0b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define output2_05 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabview3_23 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabview3_26 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabview3_24 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define select_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabview3_66 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define documen3_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define pivot2_0c SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabvwsh4_2f SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabvwsh4_30 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabview3_25 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define drawview_0e SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define viewdata_1a SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define tabview2_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define select_0c SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define cellform_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell2_0c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell_40 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define output2_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_2e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell2_10 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell_13 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_61 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_63 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_68 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr1_2e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_25 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_11 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_2b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_04 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr1_7d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_13 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_21 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr5_5c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr1_ba SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_26 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_bd SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen3_32 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_12 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen9_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_1e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_10 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_65 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_67 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_64 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_62 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen9_0b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell_41 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen2_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen8_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define document_a6 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define docsh_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen2_11 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen8_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen8_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_14 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_0e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_16 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_1a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drawpage_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr5_5a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_18 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell2_0d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define documen7_0c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define cell_24 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_52 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_5c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_29 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_2a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_0d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define read_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drawvie3_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_0e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_ba SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr1_36 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr1_43 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define document_44 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr1_5d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr4_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define docsh2_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr5_5b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define interpr5_58 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define token_5f SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drwlayer_1b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define tabview3_27 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview3_28 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview3_29 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewdata_17 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabvwshd_02 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabvwsha_04 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview_17 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewdata_23 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewdata_30 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview_79 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define gridwin_19 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define gridwin_34 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define gridwin3_09 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define gridwin3_0a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define olinewin_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview_16 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabvwshd_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview3_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen2_13 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen9_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define drwlayer_15 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh4_04 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_21 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_0e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen2_24 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen3_3a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh6_04 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewfunc_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview3_41 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define table1_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define column2_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_79 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define table2_4a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define column_09 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define attarray_0f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define attarray_1e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define attarray_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_13 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewdata_22 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewdata_2f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_24 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen3_3f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define table1_2b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define tabview3_3d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewdata_18 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh3_0e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh3_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define uiitems_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_af SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define uiitems_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define table2_aa SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define column_83 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh3_06 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define impex_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define prevwsh2_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_b9 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_b4 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_b5 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define printfun_17 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define preview_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define editutil_08 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define prevwsh_0c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define pagepar_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define pagepar_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh3_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define docsh4_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen7_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define dbfunc2_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define documen3_22 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define dbfunc4_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_3e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define table2_3a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define column3_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define column_18 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define patattr_05 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define undoblk3_25 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define attarray_06 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define table2_54 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define document_65 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define column2_2b SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define tabview3_38 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define tabview4_01 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define drawview_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview_60 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fusel_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_0b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define detfunc_1c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fusel_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin3_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_33 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin3_11 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin_0d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin3_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fusel_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define global2_4d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define cbuttonw_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define cbuttonw_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabvwsh4_2d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fusel_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fupoor_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabvwsh2_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview2_11 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fupoor_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fudraw_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_13 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview3_31 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview5_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define select_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define select_1b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define select_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin_2a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin3_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_37 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawvie3_07 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview3_6b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fusel_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview5_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawvie3_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawutil_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_1b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fupoor_0d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define gridwin3_13 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define global_95 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_19 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawvie2_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabvwsh2_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define markarr_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define markarr_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define column_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define table1_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_2f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewfun2_1f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_85 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_aa SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_1f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewfunc_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_22 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewfun2_23 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define collect_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewfunc_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define table2_37 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define column_39 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define column_1b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define document_38 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define documen3_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define documen3_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define undobase_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define attarray_20 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define impop_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define patattr_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define colrowst_12 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define excel_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview5_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawvie2_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview3_33 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewdata_20 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview_78 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewdata_49 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview_72 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview3_3a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview3_3b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define tabview3_3e SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define documen4_0c SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define bcaslot_11 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define bcaslot_07 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define tabview3_36 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define gridwin_1a SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define output3_03 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define output_05 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define output_0f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define gridwin3_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define patattr_12 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define attrib_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define table4_09 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_23 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_0b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_0c SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_1b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_0e SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_0d SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_1c SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_13 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_11 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_04 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_12 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_24 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define table4_0a SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define documen3_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define viewfun2_22 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define zforauto_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define table4_08 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_09 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_05 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_07 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_0b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_18 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_17 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_15 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_14 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_09 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_22 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_19 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_03 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_04 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_08 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_18 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define zforauto_08 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autofmt_0f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_10 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_0e SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_14 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_12 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_06 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_0a SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_0c SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_0d SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_0f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_11 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_13 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_15 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_17 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_19 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_1b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_1d SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_1f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_21 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define autoform_25 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define zforauto_04 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define zforauto_07 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define linelink_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define compiler_04 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define cell_10 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define compiler_29 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define compiler_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define compiler_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define token_0a SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define compiler_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define column3_14 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define table2_3f SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define document_45 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_05 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define token_5e SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define token_50 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define column2_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define compiler_26 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define token_21 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define refupdat_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define refupdat_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define column2_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define table2_6b SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rechead_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define attarray_25 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rechead_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define document_88 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rechead_02 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rechead_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbcolect_15 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rechead_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rechead_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define docoptio_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define viewopti_15 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define pivot2_0d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define collect_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define documen5_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define chartarr_18 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define viewopti_1b SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define attrib_3a SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define attrib_35 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define namebuff_16 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define token_51 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define excform_15 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define excform_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define colrowst_13 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define colrowst_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_26 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define frmbase_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define excform_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define tokstack_10 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_32 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define excform_13 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define tokstack_22 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define tokstack_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define excform_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_39 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_4d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define cell_2d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define collect_0f SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define collect_08 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define collect_0e SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbcolect_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_10 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_0b SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define rangenam_17 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbcolect_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define global2_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbcolect_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbcolect_05 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define collect_12 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbfunc_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define global2_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define dbcolect_1d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_48 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_33 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define frmbase_04 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define namebuff_17 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define cell_3c SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define impop_38 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define attarray_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define document_30 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define table1_08 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define column_05 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define markarr_07 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define markarr_03 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define markarr_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_3a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table1_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define markarr_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column2_09 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table1_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column2_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_55 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfunc_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfunc_13 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define documen3_19 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define documen3_1a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_62 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define markarr_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column_65 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_89 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define markarr_0a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table1_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_3b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_6e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_97 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column_71 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column2_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_3c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfun2_15 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfunc_34 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfunc_3e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_98 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tabvwsh8_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfunc_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tabvwsha_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tabvwsh5_20 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tabvwsh5_21 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tabvwshd_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define viewfunc_3b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define patattr_0a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_57 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table1_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_8d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_a1 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drwlayer_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drwlayer_12 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_55 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_80 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_57 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_4f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define colrowst_04 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define impop_4c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define exctools_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define exctools_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define exctools_05 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define exctools_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define colrowst_15 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define colrowst_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_68 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_50 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define xfbuff_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define fontbuff_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define attrib_39 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define xfbuff_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define attrib_38 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drwlayer_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drwlayer_1d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drawvie3_06 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drawsh2_05 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_a3 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_a4 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define documen8_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drwlayer_27 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_61 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define attrib_36 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tabvwsh7_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define tphf_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define stlsheet_08 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define styledlg_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define styledlg_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define styledlg_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define stlsheet_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define docpool_08 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define docpool_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_51 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define column2_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_58 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table2_5b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_60 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define dbfunc_09 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define collect_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table5_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_5f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define printfun_08 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define document_5e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define table5_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define printfun_1e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define printfun_1f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define editutil_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define undobase_0a SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define table1_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define undocell_08 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define viewdata_15 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define documen3_2d SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define undocell_09 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define undocell_1a SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define uiitems_02 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define uiitems_03 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define uiitems_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define uiitems_04 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define undocell_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define document_96 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define global2_47 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define global2_4a SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define global2_4b SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define editsh_08 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define tabview2_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define tabview2_0a SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define document_2b SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define tabview2_08 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define viewutil_01 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define viewutil_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define viewutil_04 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define viewutil_05 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define select_14 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define viewdata_3e SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define hdrcont_06 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define colrowba_08 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define viewdata_21 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define tabview_15 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define documen3_03 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define dbdocfun_06 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define dbcolect_1b SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define dbdocfun_04 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define table2_4c SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define documen8_0c SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define drawvie2_03 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define undoblk3_27 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define undoblk3_5c SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define undoblk3_3f SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define undoblk3_5f SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define column_6e SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define patattr_17 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define cell2_0e SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define select_05 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define select_06 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define tabview5_07 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define document_34 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr4_14 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_b7 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define dociter_0a SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define dociter_0b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define dociter_0c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_71 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr3_29 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_6b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_6a SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define dociter_20 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr3_1f SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr3_1e SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr3_1d SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr3_31 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr5_b1 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr4_bb SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_6c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_70 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_74 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_75 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_72 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr1_73 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr4_1d SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define token_0c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr5_b3 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define interpr5_6b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define column2_14 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_17 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_18 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_19 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table2_6c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table2_9d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table2_9e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define column2_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define documen2_08 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define column2_04 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define column2_15 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rechead_04 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define document_89 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rechead_05 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define docsh_0b SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define docoptio_0f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define attarray_24 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define column2_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rechead_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rechead_0b SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dbcolect_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define pivot2_0e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rangenam_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rechead_0c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define cell_0d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define token_2a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define token_43 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define rechead_0e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define documen8_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define viewopti_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define viewopti_1c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define documen8_04 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define attarray_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define attrib_74 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define editutil_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define patattr_14 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define cell2_1d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define cell2_1f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define drwlayer_06 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define documen9_0c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_13 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_14 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_15 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table2_b0 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define document_8d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table3_92 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define attrib_a3 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_0f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_10 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define interpr1_b9 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define global2_0f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define tabvwshc_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define global2_29 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define appmain_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define global2_21 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_31 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define global2_31 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define anyrefdg_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_2f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define global2_3a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_2e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define interpr1_7f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define document_41 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table2_3c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define column3_11 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_0e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dociter_11 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define interpr1_80 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define appmain3_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define tabvwsh6_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dbcolect_18 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_34 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_3f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_42 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define msgpool_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define inputhdl_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define appmain3_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define uiitems_3a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dbcolect_06 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define documen3_20 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table3_7c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_09 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_31 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_32 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_2f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dbcolect_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_37 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dbcolect_0b SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin_30 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define gridwin4_08 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define documen3_1d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table3_79 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table3_7f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define global2_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table2_77 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define table3_78 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define appmain7_0c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define appoptio_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define printopt_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define interpr1_86 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define appmain2_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define patattr_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define tabview5_0d SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define tabcont_04 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define undoolk_01 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define undobase_01 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define documen9_03 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_03 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_55 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define tokstack_11 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_54 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define interpr4_19 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define interpr4_1a SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define interpr1_97 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_02 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_56 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_57 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_04 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_58 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_05 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_59 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define token_09 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define global_6a SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define token_27 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_25 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_24 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_23 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_22 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_21 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_20 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_3f SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_1e SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_4e SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define compiler_1c SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define cell_3d SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define column_81 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define table2_a8 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define document_a7 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define table2_ae SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define column_85 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define cell_3f SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define appmain_36 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define printfun_02 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_16 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_16 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_0c SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_19 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_17 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_0e SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_0b SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_18 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_0d SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_1a SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_18 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_15 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_14 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_13 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define prevwsh_1f SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define pagepar_07 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define pagepar_0a SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define pagepar_09 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define printfun_06 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define printfun_2c SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define preview_1b SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define printfun_29 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_11 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_04 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_0a SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_05 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_19 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_22 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_1c SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_1d SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define editutil_0a SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_09 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define output_04 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define output3_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_20 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_18 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define editutil_07 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define editutil_10 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define editutil_14 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define editutil_18 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_0c SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define printfun_0d SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define dbcolect_0c SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define pagepar_04 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define printfun_0f SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define document_93 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define table5_03 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define document_94 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define table5_04 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define olinewin_06 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define global_67 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define editutil_09 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define table5_07 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define document_97 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define printfun_12 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define printfun_25 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define printfun_27 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define colrowba_12 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define fusel_01 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define patattr_11 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define attarray_2c SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define column2_22 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define drawpage_02 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define drwlayer_0f SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define drwlayer_0c SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define drwlayer_0d SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define tabview3_2a SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define tabview3_40 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define token_69 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define documen7_01 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define bcaslot_0f SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define bcaslot_01 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define bcaslot_03 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define bcaslot_06 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define bcaslot_05 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define bcaslot_0e SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define dociter_16 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define cell_23 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define fupoor_02 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define tabview3_2b SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define document_86 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define table1_12 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define column2_1d SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define column2_2d SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define autoform_03 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define compiler_52 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define attarray_27 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define inputhdl_23 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define editsh_05 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define editsh_09 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define undoblk3_3d SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define fusel_02 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define autofmt_02 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define autofmt_0a SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define autofmt_1a SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define autofmt_1e SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define fudraw_02 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define global_09 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define table4_07 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define autoform_26 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define documen3_15 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define document_52 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define table2_8e SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define document_9c SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define table2_a0 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define documen7_09 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define table5_05 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define column2_26 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define cell_35 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define autoform_08 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define autoform_1a SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define autoform_1c SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define autoform_1e SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define autoform_20 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define viewdata_3c SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define undodat_33 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define undodat_4d SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define document_2d SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define docsh_08 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define imoptdlg_04 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define imoptdlg_03 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define imoptdlg_05 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define imoptdlg_06 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define imoptdlg_07 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define imoptdlg_02 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define global_98 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define document_4b SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define table2_46 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define column_4f SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define documen3_1c SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define table3_76 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define table2_9f SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define impex_02 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define impex_06 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define impex_16 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define impex_20 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define impex_10 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define impex_18 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define documen7_13 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define table2_a7 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define column3_1b SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define drawview_04 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define column3_19 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define table2_44 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define drwlayer_02 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define drwlayer_1f SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define interpr1_42 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define table1_0a SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define column_08 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define markarr_0d SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define tabvwshd_04 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define prevwsh_0f SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define editsh_07 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define printfun_2b SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define docsh6_09 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define gridwin4_07 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define attrib_73 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define attrib_a5 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define attrib_a4 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define editutil_0d SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define editutil_1d SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define editutil_11 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define editutil_15 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define editutil_19 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define document_a3 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define column3_09 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define table2_34 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define table4_13 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define column_17 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define column3_0f SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define table4_05 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define column3_1e SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define rechead_08 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define cell_0c SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define rechead_0d SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define token_28 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define token_41 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define token_29 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define token_42 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define token_60 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define undoblk3_31 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define filldlg_01 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define filldlg_02 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define filldlg_03 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define filldlg_04 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define filldlg_06 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define filldlg_07 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define filldlg_05 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define filldlg_08 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define document_0b SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define document_11 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define table1_05 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define document_4c SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define table2_47 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define column_50 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define table2_a9 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define column_82 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define documen7_0e SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define table1_25 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
-#define column2_18 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
-#define interpr3_05 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
-#define interpr3_0d SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
-#define interpr3_12 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
-#define interpr3_47 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_4e SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_50 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_4d SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_51 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_54 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_19 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_52 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_15 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_4f SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_55 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_4a SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_48 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_53 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_14 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_49 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_1c SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr5_56 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr5_11 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_01 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_07 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr5_b4 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_0f SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr5_b5 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_46 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_0a SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_35 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_39 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_3a SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_3b SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_3d SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_05 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_02 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_06 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define scmatrix_04 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr3_4c SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define interpr4_1f SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define undoblk3_33 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define undoblk3_5d SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define patattr_06 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define cell_37 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define bcaslot_02 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define tabview_14 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define docoptio_02 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define viewopti_02 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define impop_2c SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define impop_42 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define documen3_3b SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define exctools_02 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define rangenam_1a SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define rangenam_1b SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define cell2_1c SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define cell2_1e SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define documen9_02 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define prevwsh_03 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define prevwsh_06 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define prevwsh_07 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define preview_02 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define preview_01 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define olinetab_0b SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define table2_06 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define olinetab_0e SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define olinetab_22 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define compiler_43 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define compiler_44 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define compiler_54 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_02 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_03 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_09 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_01 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_13 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_16 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define interpr3_0a SEG_SEGCLASS(SLICES_SEG046,SLICES_CODE)
-#define interpr3_0b SEG_SEGCLASS(SLICES_SEG046,SLICES_CODE)
-#define interpr3_0f SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
-#define interpr3_17 SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
-#define interpr3_1a SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
-#define interpr3_20 SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
-#define interpr3_27 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
-#define interpr3_32 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
-#define interpr3_34 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
-#define interpr3_45 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
-#define interpr3_36 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
-#define interpr3_33 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
-#define impop_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define fontbuff_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define fontbuff_03 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define fontbuff_07 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define xfbuff_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define xfbuff_0a SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define tokstack_03 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define tokstack_0a SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define frmbase_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
-#define impop_0b SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_51 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_49 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_1f SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define fontbuff_09 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_50 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_06 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_09 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_05 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_54 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_01 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_2a SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define namebuff_07 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_4a SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_45 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_02 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_0b SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define vfbuff_03 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define vfbuff_05 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define vfbuff_09 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_0a SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define namebuff_01 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_0c SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define spstring_08 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_56 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
-#define impop_14 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_1c SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_1d SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_20 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_23 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_27 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_28 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_29 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_2b SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
-#define impop_31 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
-#define impop_36 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
-#define xfbuff_01 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
-#define xfbuff_04 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
-#define xfbuff_07 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
-#define vfbuff_07 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
-#define impop_3b SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define exctools_08 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define impop_40 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define impop_47 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define impop_4e SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define impop_53 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define colrowst_01 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define colrowst_03 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
-#define colrowst_02 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define colrowst_0b SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define colrowst_0d SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define colrowst_14 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define colrowst_10 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define colrowst_11 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_01 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_04 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_06 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_10 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_11 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_14 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_15 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define exctools_16 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define tokstack_02 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
-#define tokstack_15 SEG_SEGCLASS(SLICES_SEG055,SLICES_CODE)
-#define excform_0a SEG_SEGCLASS(SLICES_SEG055,SLICES_CODE)
-#define tokstack_19 SEG_SEGCLASS(SLICES_SEG055,SLICES_CODE)
-#define tokstack_1a SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define tokstack_1c SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define tokstack_1d SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define namebuff_03 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define namebuff_12 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define namebuff_18 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define excform_04 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
-#define excform_0b SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define excform_0c SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define excform_0d SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define vfbuff_01 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define fontbuff_01 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define fontbuff_05 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define fontbuff_0d SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define xfbuff_09 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
-#define frmbase_01 SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define dbcolect_0d SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define dbcolect_10 SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define documen3_06 SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define dociter_1a SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define dociter_1b SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define dociter_1c SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define dociter_1d SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
-#define compiler_53 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define compiler_08 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define undoblk2_2d SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define undoblk2_31 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define column3_13 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define table2_3e SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define interpr1_6d SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define interpr2_10 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define interpr2_26 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
-#define tokstack_1e SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define dbcolect_19 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_46 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_48 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_4b SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_4c SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_4f SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_56 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr1_58 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
-#define interpr2_13 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
-#define interpr2_17 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
-#define interpr2_25 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
-#define interpr2_29 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
-#define interpr2_3e SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
-#define interpr2_3f SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
-#define interpr2_41 SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
-#define interpr2_42 SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
-#define interpr2_57 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define interpr5_76 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define appmain_02 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define docsh_09 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define docsh_0d SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define docsh_3a SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define appmain9_02 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
-#define docsh4_05 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define printfun_01 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define printfun_2a SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define global_10 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define compiler_02 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define interpr4_c2 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define callform_09 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
-#define documen2_09 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
-#define dociter_12 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
-#define adiasync_03 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
-#define interpr2_38 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
-#define interpr2_39 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
-#define interpr2_3a SEG_SEGCLASS(SLICES_SEG066,SLICES_CODE)
-#define interpr2_43 SEG_SEGCLASS(SLICES_SEG066,SLICES_CODE)
-#define interpr3_2a SEG_SEGCLASS(SLICES_SEG067,SLICES_CODE)
-#define impop_25 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define exctools_0d SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define colrowst_07 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define tabvwsh4_0c SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define prevwsh_09 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define prevwsh_1c SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define hdrcont_07 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
-#define tphf_02 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_04 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_0d SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_03 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_0c SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_06 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_07 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define tphf_0a SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
-#define fupoor_05 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
-#define cell2_20 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
-#define dbcolect_03 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
-#define dbcolect_1f SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
-#define collect_14 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
-#define interpr4_15 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define compiler_0a SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define interpr1_6e SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define interpr1_6f SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define table2_af SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define column2_17 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define table1_11 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define document_18 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define column2_1e SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
-#define scmatrix_09 SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
-#define interpr3_04 SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
-#define interpr3_0c SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
-#define undodat_31 SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
-#define undodat_3f SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define undodat_54 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define attrdlg_01 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define attrdlg_02 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define attrdlg_03 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define drawview_18 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define undoblk3_26 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define gridwin_24 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define fupoor_03 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define fupoor_04 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define fudraw_07 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define documen3_1e SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define table3_7a SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
-#define document_35 SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define document_76 SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define table2_4d SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define column_0c SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define attarray_0c SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define attarray_0b SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define attarray_0a SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
-#define global2_02 SEG_SEGCLASS(SLICES_SEG075,SLICES_CODE)
-#define dbcolect_12 SEG_SEGCLASS(SLICES_SEG075,SLICES_CODE)
-#define dbcolect_13 SEG_SEGCLASS(SLICES_SEG075,SLICES_CODE)
-#define interpr4_2d SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
-#define interpr3_23 SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
-#define interpr3_18 SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
-#define interpr3_22 SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
-#define interpr3_26 SEG_SEGCLASS(SLICES_SEG077,SLICES_CODE)
-#define interpr3_2f SEG_SEGCLASS(SLICES_SEG077,SLICES_CODE)
-#define interpr3_30 SEG_SEGCLASS(SLICES_SEG078,SLICES_CODE)
-#define interpr3_4b SEG_SEGCLASS(SLICES_SEG079,SLICES_CODE)
-#define impop_37 SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
-#define colrowst_0e SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
-#define excform_0e SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
-#define excform_0f SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
-#define appmain_08 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputwin_2a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputwin_05 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define appmain_0f SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputhdl_13 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputhdl_0a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputwin_03 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define viewfun2_8a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define document_4a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define tabview4_04 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define tabview4_03 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define appmain3_06 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputhdl_0e SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define viewutil_03 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define viewfun2_88 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define inputwin_13 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
-#define appmain_0e SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
-#define inputhdl_12 SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
-#define docsh_05 SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
-#define appmain6_04 SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
-#define appmain7_07 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define global_0c SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define table4_01 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define table4_03 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define column_16 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_09 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define collect_09 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_01 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_13 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_05 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_0a SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_04 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define userlist_06 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
-#define inputwin_1f SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define inputhdl_2a SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define docsh4_0c SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define docsh4_10 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphf_05 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_02 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_05 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_02 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_04 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_01 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_05 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_08 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_07 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_0e SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_06 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_0c SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_0d SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_0b SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tptable_0a SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_06 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_0c SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_09 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_23 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_15 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_01 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_08 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_16 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_12 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_19 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_0a SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_26 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define prevwsh_20 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_17 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_0b SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_10 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_11 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_13 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_14 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_24 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tphfedit_25 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
-#define tabview5_0e SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define fumark_04 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define fumark_0b SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define tabview_6a SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define gridwin_27 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define fumark_09 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define viewdata_53 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
-#define uiitems_17 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
-#define uiitems_1a SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
-#define global2_08 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
-#define uiitems_24 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
-#define uiitems_27 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
-#define global2_1a SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
-#define uiitems_39 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define uiitems_3d SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define global2_28 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define global2_33 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define global2_35 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define global2_34 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define global2_32 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
-#define tabvwshc_02 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define tabview_08 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define tabview2_0c SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define tabview_6e SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define viewdata_51 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define drawsh2_06 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define gridwin_35 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
-#define tabview3_5d SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
-#define tabview3_5e SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
-#define dbfunc_0d SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
-#define tabview4_09 SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
-#define colrowba_13 SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
-#define docfunc_01 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuconrec_05 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuconstr_05 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuconstr_09 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuins1_01 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuins1_09 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define tabvwshb_03 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define tabview5_09 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuins1_02 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define fuins1_0a SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define tabview_68 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
-#define preview_06 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
-#define gridwin_02 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
-#define colrowba_06 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
-#define undoblk2_2b SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
-#define output_11 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
-#define undoolk_03 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define undoblk2_2c SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define undobase_02 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define tbxalign_01 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define imoptdlg_0a SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define drawsh_09 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define fusel_08 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define fuconrec_03 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define fuconstr_03 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
-#define fuconrec_04 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define fuconstr_04 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define pvlaydlg_01 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define pvlaydlg_03 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define pvlaydlg_06 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define fieldwnd_03 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define pvlaydlg_07 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define fieldwnd_04 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define fieldwnd_11 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define pvlaydlg_14 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define pvlaydlg_1d SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define fieldwnd_0b SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
-#define tphf_08 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define tphf_09 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define tbxdraw_04 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define fudraw_06 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define fuconstr_07 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define fuconrec_07 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define fusel_07 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define fieldwnd_01 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
-#define attrib_3b SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define documen7_0b SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define documen7_11 SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define documen7_10 SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define documen7_0f SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define cell_3a SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define documen7_12 SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
-#define docpool_06 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define cell_0a SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define cell_12 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_05 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_15 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_14 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_0b SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_0c SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define cell_26 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_0d SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_0e SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define compiler_13 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
-#define cell2_21 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define rangeutl_07 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define autoform_27 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define autoform_2c SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define autoform_2e SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define zforauto_05 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define autoform_2f SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
-#define autoform_29 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
-#define autoform_2b SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
-#define drwlayer_08 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
-#define drwlayer_09 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
-#define interpr1_64 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
-#define interpr1_a3 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
-#define table4_04 SEG_SEGCLASS(SELDOM_SEG018,SELDOM_CODE)
-#define subtotal_08 SEG_SEGCLASS(SELDOM_SEG018,SELDOM_CODE)
-#define subtotal_09 SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
-#define impop_0d SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
-#define spstring_07 SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
-#define impop_0e SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
-#define namebuff_0f SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
-#define rangenam_02 SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
-#define impop_3a SEG_SEGCLASS(SELDOM_SEG020,SELDOM_CODE)
-#define impop_4f SEG_SEGCLASS(SELDOM_SEG020,SELDOM_CODE)
-#define excform_10 SEG_SEGCLASS(SELDOM_SEG020,SELDOM_CODE)
-#define tabvwsh8_02 SEG_SEGCLASS(SELDOM_SEG021,SELDOM_CODE)
-#define tabvwsh8_06 SEG_SEGCLASS(SELDOM_SEG021,SELDOM_CODE)
-#define tabvwshf_01 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define document_0d SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define document_0c SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define document_0e SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define viewfun2_27 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define viewdata_09 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define docsh3_14 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define tabcont_0c SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define strindlg_01 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define strindlg_02 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define strindlg_03 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define undotab_01 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
-#define uiitems_1e SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define uiitems_21 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define filtdlg_0b SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define filtdlg_04 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define anyrefdg_04 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define filtdlg_0a SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define uiitems_1d SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define global2_12 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
-#define tabview_64 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
-#define viewfunc_37 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
-#define document_6f SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
-#define table2_8c SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
-#define column_68 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
-#define attarray_28 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
-#define viewfunc_40 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define undotab_02 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define undotab_03 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define undotab_1f SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define tbxctl_03 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define tbxctl_04 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define tbxdraw_01 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
-#define fumark_07 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define fumark_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define fuconrec_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define fuconrec_02 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define fuconrec_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define fuconstr_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define drawsh2_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define filtdlg_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define filtdlg_03 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define filtdlg_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define filtdlg_0e SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define filtdlg_07 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define filtdlg_09 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define foptmgr_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define foptmgr_03 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
-#define tbxdraw_02 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define tbxdraw_03 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define fuconstr_01 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define fuconstr_02 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define fuconstr_0a SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define rangenam_08 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define cell_3b SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define interpr4_1b SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define interpr1_8e SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define interpr1_8f SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
-#define interpr4_27 SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
-#define interpr1_38 SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
-#define interpr1_39 SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
-#define interpr1_3c SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
-#define interpr1_3d SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_3e SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_81 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_82 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_83 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_87 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_88 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_b8 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_89 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_8a SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr1_8b SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
-#define interpr3_2b SEG_SEGCLASS(SELDOM_SEG030,SELDOM_CODE)
-#define interpr3_37 SEG_SEGCLASS(SELDOM_SEG030,SELDOM_CODE)
-#define interpr3_3c SEG_SEGCLASS(SELDOM_SEG030,SELDOM_CODE)
-#define interpr3_3e SEG_SEGCLASS(SELDOM_SEG031,SELDOM_CODE)
-#define interpr3_3f SEG_SEGCLASS(SELDOM_SEG031,SELDOM_CODE)
-#define interpr3_56 SEG_SEGCLASS(SELDOM_SEG032,SELDOM_CODE)
-#define impop_15 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define impop_34 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define tokstack_0b SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define tabvwsh4_0a SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define tabvwsh4_22 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define dbdocfun_01 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define dbdocfun_02 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define document_1d SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define dbcolect_07 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define documen4_02 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define documen2_10 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define table2_91 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define column3_02 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define documen4_0a SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define table4_12 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define column2_28 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define documen4_0b SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define table1_2d SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define undodat_3d SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
-#define viewdata_2a SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define undodat_32 SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define undodat_3e SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define dbfunc_0c SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define attrib_31 SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define document_9b SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define table2_9c SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
-#define undoblk3_3e SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define undocell_01 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define undocell_02 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define undocell_03 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define undocell_19 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define tabsplit_03 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define select_12 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define select_15 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
-#define select_17 SEG_SEGCLASS(SELDOM_SEG036,SELDOM_CODE)
-#define gridwin4_04 SEG_SEGCLASS(SELDOM_SEG036,SELDOM_CODE)
-#define hdrcont_0c SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
-#define fumark_01 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
-#define fumark_03 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
-#define drawsh2_02 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
-#define filtdlg_02 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
-#define foptmgr_02 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
-#define filtdlg_11 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
-#define filtdlg_12 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
-#define anyrefdg_02 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
-#define global_02 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
-#define interpr1_8d SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
-#define attrib_3c SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
-#define attrib_3d SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
-#define attrib_79 SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
-#define attrib_80 SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
-#define attrib_98 SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
-#define documen8_0e SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
-#define document_40 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define impop_0f SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define global2_42 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define global2_46 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define table2_8a SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define column3_10 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define cell_04 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define global2_44 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define global2_45 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
-#define document_5a SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define table2_5d SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define document_5b SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define table2_5e SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define document_66 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define table2_4f SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define column_12 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define document_9f SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define excobj_01 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define document_a0 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
-#define document_b6 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
-#define table1_2e SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
-#define column3_04 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
-#define patattr_03 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
-#define global2_48 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
-#define interpr1_8c SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
-#define rangenam_09 SEG_SEGCLASS(SELDOM_SEG043,SELDOM_CODE)
-#define dbcolect_02 SEG_SEGCLASS(SELDOM_SEG043,SELDOM_CODE)
-#define drwlayer_07 SEG_SEGCLASS(SELDOM_SEG044,SELDOM_CODE)
-#define interpr4_1e SEG_SEGCLASS(SELDOM_SEG044,SELDOM_CODE)
-#define interpr1_7b SEG_SEGCLASS(SELDOM_SEG044,SELDOM_CODE)
-#define interpr1_2f SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_3f SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_40 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_41 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_44 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_45 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_47 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_49 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_4a SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_4d SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_4e SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_50 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_51 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
-#define interpr1_52 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_53 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_54 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_55 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_60 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_61 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_62 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_63 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
-#define interpr1_65 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_66 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_67 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_68 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_69 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_76 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_77 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
-#define interpr1_78 SEG_SEGCLASS(SELDOM_SEG048,SELDOM_CODE)
-#define interpr1_79 SEG_SEGCLASS(SELDOM_SEG048,SELDOM_CODE)
-#define interpr1_7a SEG_SEGCLASS(SELDOM_SEG049,SELDOM_CODE)
-#define interpr1_7c SEG_SEGCLASS(SELDOM_SEG050,SELDOM_CODE)
-#define interpr1_7e SEG_SEGCLASS(SELDOM_SEG051,SELDOM_CODE)
-#define interpr1_91 SEG_SEGCLASS(SELDOM_SEG051,SELDOM_CODE)
-#define interpr1_92 SEG_SEGCLASS(SELDOM_SEG051,SELDOM_CODE)
-#define interpr1_93 SEG_SEGCLASS(SELDOM_SEG052,SELDOM_CODE)
-#define interpr1_94 SEG_SEGCLASS(SELDOM_SEG052,SELDOM_CODE)
-#define interpr1_95 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
-#define interpr1_96 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
-#define interpr1_98 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
-#define interpr1_99 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
-#define interpr1_9a SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
-#define interpr1_9b SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
-#define interpr1_9c SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
-#define interpr1_9d SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
-#define interpr1_9e SEG_SEGCLASS(SELDOM_SEG055,SELDOM_CODE)
-#define interpr1_a4 SEG_SEGCLASS(SELDOM_SEG055,SELDOM_CODE)
-#define interpr1_a5 SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
-#define interpr1_a9 SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
-#define interpr1_b6 SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
-#define interpr1_aa SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
-#define interpr1_af SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define table2_7e SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_08 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_09 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_12 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_14 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_15 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_16 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
-#define interpr2_18 SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_1b SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_1c SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_1d SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_b4 SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_71 SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_4e SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
-#define interpr2_21 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
-#define interpr2_22 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
-#define interpr2_23 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
-#define interpr2_27 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
-#define interpr2_28 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
-#define interpr2_3c SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
-#define interpr2_40 SEG_SEGCLASS(SELDOM_SEG060,SELDOM_CODE)
-#define interpr2_49 SEG_SEGCLASS(SELDOM_SEG060,SELDOM_CODE)
-#define interpr2_4a SEG_SEGCLASS(SELDOM_SEG061,SELDOM_CODE)
-#define interpr2_4b SEG_SEGCLASS(SELDOM_SEG061,SELDOM_CODE)
-#define interpr2_4c SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
-#define interpr2_4d SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
-#define interpr2_70 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
-#define interpr2_72 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
-#define interpr2_73 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
-#define interpr2_74 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
-#define interpr2_75 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
-#define interpr2_af SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
-#define interpr2_b3 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
-#define interpr5_4f SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
-#define interpr5_50 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
-#define interpr5_64 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
-#define interpr5_52 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_b0 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_66 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_67 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_68 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_69 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_6a SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
-#define interpr5_5f SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
-#define interpr5_78 SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
-#define interpr5_60 SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
-#define interpr5_6c SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
-#define interpr5_6e SEG_SEGCLASS(SELDOM_SEG066,SELDOM_CODE)
-#define interpr5_6f SEG_SEGCLASS(SELDOM_SEG066,SELDOM_CODE)
-#define interpr3_08 SEG_SEGCLASS(SELDOM_SEG066,SELDOM_CODE)
-#define interpr3_0e SEG_SEGCLASS(SELDOM_SEG067,SELDOM_CODE)
-#define interpr3_21 SEG_SEGCLASS(SELDOM_SEG067,SELDOM_CODE)
-#define interpr3_24 SEG_SEGCLASS(SELDOM_SEG068,SELDOM_CODE)
-#define interpr3_25 SEG_SEGCLASS(SELDOM_SEG069,SELDOM_CODE)
-#define interpr3_2c SEG_SEGCLASS(SELDOM_SEG069,SELDOM_CODE)
-#define interpr3_2d SEG_SEGCLASS(SELDOM_SEG069,SELDOM_CODE)
-#define interpr3_38 SEG_SEGCLASS(SELDOM_SEG070,SELDOM_CODE)
-#define interpr3_44 SEG_SEGCLASS(SELDOM_SEG070,SELDOM_CODE)
-#define impop_30 SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
-#define colrowst_05 SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
-#define tokstack_0c SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
-#define tokstack_0f SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
-#define appmain_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_24 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_25 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_2f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_30 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_31 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_32 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_33 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_34 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_38 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_3a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_51 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_52 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain_5c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_0a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_33 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_35 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_3e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_42 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh_43 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain2_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain2_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain6_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain6_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_04 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_0b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_0d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_0f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain7_11 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define applink_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain3_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain3_07 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain3_08 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain3_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain4_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain4_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain4_04 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmain4_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define msgpool_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_10 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_11 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_12 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_15 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_1b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_1c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_24 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_25 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputwin_27 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputhdl_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputhdl_1d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputhdl_1e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputhdl_1f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define inputhdl_20 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmaina_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define appmaina_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh4_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh4_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh4_07 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh4_08 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docsh4_09 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define docsh4_0a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define docsh4_0b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define docsh4_0e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define docsh4_12 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh9_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh9_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh9_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshh_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshh_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshh_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshb_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshb_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshb_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh2_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh2_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshd_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwshd_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh8_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh8_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh8_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_04 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_0e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_0f SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_10 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_17 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_18 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_1c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_20 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_21 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_2b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_2c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_2e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_31 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_32 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_33 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabvwsh4_34 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define tabview5_0a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_15 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_18 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_19 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_1f SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_20 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_23 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_25 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_26 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_2a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_2b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_2c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_2d SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_33 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_35 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_36 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_37 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_3b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_3c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_41 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_43 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_44 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_45 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_46 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_47 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_48 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_49 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_4a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_4b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_4c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_4d SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define uiitems_4e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_04 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define sbxtable_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define sbxtable_09 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define sbxtable_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define sbxtable_0b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define sbxtable_0c SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define sbxtable_0e SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh6_07 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh6_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh6_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh6_0b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_07 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_0b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_12 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_13 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_14 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_15 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_17 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_19 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_23 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_24 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_25 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_26 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_27 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_28 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_29 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_2a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_2b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_2e SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_2f SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_30 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_31 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define impex_32 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh2_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh2_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define tpstat_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define tpstat_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define tpstat_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define tpstat_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define tpstat_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh7_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define dbdocfun_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh3_17 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define docsh3_18 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define autostyl_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define autostyl_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define autostyl_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define autostyl_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define autostyl_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define autostyl_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define autostyl_07 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define autostyl_08 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_08 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_0a SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_0d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_10 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_11 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_17 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_1b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_1d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define prevwsh_1e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define pivotsh_01 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define pivotsh_02 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define pivotsh_03 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define pivotsh_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define editsh_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define editsh_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define editsh_0b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_17 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_18 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_19 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_1b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_1d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_1e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_20 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_21 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_24 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_25 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_26 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_28 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_29 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_2a SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_2b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_2c SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_2d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_2e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_2f SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_30 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_31 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_32 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_87 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_89 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewfun2_8c SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfun2_8d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_0d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_0f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_10 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_19 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_1a SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_1b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_65 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_66 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_67 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_6b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_6c SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_6f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_70 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_71 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_74 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_76 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview_77 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_02 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_07 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_08 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_0a SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_0b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_0c SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_0f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_12 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_13 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_14 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_16 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_19 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_29 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_34 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_35 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_39 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_3d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_40 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_41 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_42 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_47 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_4b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_50 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_52 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_55 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewdata_56 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_2d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_2e SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_2f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_30 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_32 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_39 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_45 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_67 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_68 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define tabview3_69 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfunc_04 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfunc_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfunc_0e SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfunc_10 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfunc_11 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define viewfunc_12 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_32 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_35 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_36 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_39 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_3a SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_3c SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_3d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_3f SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_41 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_42 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_43 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_44 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define viewfunc_45 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define tabview2_01 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define tabview2_07 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define tabview2_0d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define tabview2_0e SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define tabview2_12 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define printfun_03 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define printfun_23 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define printfun_26 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define printfun_2d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define printfun_2e SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define printfun_2f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define sbxrange_01 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define sbxrange_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define sbxrange_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define sbxrange_04 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define sbxrange_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_01 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_08 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_09 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_0a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_0b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define dataobj_0c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_04 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_06 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_07 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_08 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_09 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_0a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_0b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_0c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_0d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_0e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_0f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_10 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_11 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_12 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_13 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_14 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_15 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_16 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_17 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_18 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_19 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_1a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_1b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_1c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_1d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_1e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_1f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_20 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_21 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_22 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_23 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_24 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_25 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_26 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_27 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_28 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_29 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_2a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_2b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_2c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_2d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_2e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_2f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_30 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_34 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_35 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_36 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define undodat_37 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_38 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_39 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_3a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_3b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_3c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_40 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_41 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_42 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_49 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_4a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_4b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_4c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_4e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_4f SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_50 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_51 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_52 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_53 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_56 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_57 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_58 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_59 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_5a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_5b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_5c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_5d SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_5e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_5f SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_60 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_61 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_62 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_63 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_64 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_65 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_66 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_67 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_68 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_69 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define undodat_6a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define servobj_01 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define servobj_02 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define servobj_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define servobj_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define servobj_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define servobj_06 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_01 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_02 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_06 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_07 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_08 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_09 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_0b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_0c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_0e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define dbfunc3_0f SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc3_11 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc3_12 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc3_13 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define galwrap_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define galwrap_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define galwrap_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define galwrap_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define galwrap_06 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define galwrap_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define styledlg_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define attrdlg_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_08 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_17 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define dbfunc_18 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define client_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define client_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define client_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define client_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define client_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define tabvwshe_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define tabvwshe_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define tabvwshe_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define viewfun4_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define viewfun4_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define viewfun4_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define viewfun4_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define viewfun4_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define viewfun6_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun6_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun6_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun6_04 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun6_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun6_06 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_0b SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_14 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define viewfun3_15 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tabview4_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tabview4_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define drawview_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define drawview_12 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define drawview_1a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_04 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_06 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_09 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_0a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define tablink_0b SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_04 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_06 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_09 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_0a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_0b SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_0c SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_0d SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_0e SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_0f SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_10 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_11 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_12 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define undoblk_13 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_14 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_15 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_16 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_17 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_18 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_19 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_1a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_1b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_1c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_1d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_1e SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_1f SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_20 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_21 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_22 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_23 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_24 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_25 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_26 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_27 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_28 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_29 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_2a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_2b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_2c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_2d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_2e SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_2f SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_30 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_31 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_32 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_33 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_34 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_35 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_36 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_37 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_38 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_39 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_3a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_3b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_3c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_3d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_3e SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_3f SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_40 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_41 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_42 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_43 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_44 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_45 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_46 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_47 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define undoblk_48 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define preview_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define preview_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define preview_13 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define preview_14 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define viewutil_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_01 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_02 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_07 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_08 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_09 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_0a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_0b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_0c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_0d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define namedlg_0e SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define namedlg_0f SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define namedlg_10 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define docsh5_01 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define docsh5_02 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define docsh5_03 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define docsh5_04 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define docsh5_05 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_1f SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_20 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_21 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_22 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_23 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_24 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_28 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_29 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_2a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_32 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_34 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_35 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_36 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_37 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_38 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_39 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_3a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_3b SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_3c SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_40 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_41 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_42 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_43 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_44 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_45 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_46 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_47 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_48 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_49 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_50 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_51 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_52 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_53 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_54 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_55 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_56 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_57 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_58 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_59 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_5a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_5b SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_5e SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_60 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_61 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_62 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_63 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_64 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_65 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_66 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_67 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_68 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undoblk3_69 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_04 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_05 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_06 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_07 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_08 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_09 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_0a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_0b SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_0c SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_0d SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_0e SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_0f SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_10 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_11 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_12 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_13 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_14 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_15 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define undotab_16 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_17 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_18 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_19 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_1a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_1b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_1c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_1d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_1e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_20 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_21 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_22 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_23 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_24 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_25 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_26 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_27 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_28 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_29 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_2a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_2b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_2c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_2d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_2e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_2f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_30 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_31 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_32 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_33 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_34 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_35 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_36 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_37 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undotab_38 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_0c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_0e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_0f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_12 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_13 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_14 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_15 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_16 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_17 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_18 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_1b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define undocell_1c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_12 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_13 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_14 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define gridwin_38 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_07 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_08 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_09 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_0c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define olinewin_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabsplit_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabsplit_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define colrowba_07 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define colrowba_0f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define colrowba_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define colrowba_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define colrowba_14 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_08 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_09 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_0e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define tabcont_0f SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define select_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define select_07 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define select_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define select_10 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define select_13 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define select_16 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define refundo_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define refundo_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define refundo_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define refundo_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoblk2_2e SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoblk2_2f SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoblk2_30 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define gridwin4_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output_20 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output_21 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output_22 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output_23 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output_24 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output_25 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output2_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define output2_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define dataobj2_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define dataobj3_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define dataobj3_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_06 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_07 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_08 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_0c SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_0d SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_0e SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_0f SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_10 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_11 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_12 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_13 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_14 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undobase_15 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoutil_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoutil_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoutil_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define undoutil_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabpages_18 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabpages_19 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabpages_1a SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabpages_1b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabpages_1c SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define tabpages_1d SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define tabpages_20 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define tabpages_22 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie3_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define tabvwshg_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define spelleng_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun5_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun5_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun7_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun7_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun7_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun7_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun7_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define viewfun7_06 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define gridwin2_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define gridwin2_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define gridwin2_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define gridwin2_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define gridwin2_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define hdrcont_09 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define hdrcont_0a SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define hdrcont_0b SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define undoolk_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define undoolk_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie4_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie4_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie4_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie4_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie4_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define drawvie4_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_09 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_0a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_0b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_0c SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_0d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_0e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_10 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_12 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_13 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_14 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_15 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_16 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_17 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_18 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_19 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_1a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_1b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_1c SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_1d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_1e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_1f SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_20 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_21 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_22 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_23 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_24 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_25 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_26 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_27 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_28 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_29 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_2a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_2b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_2c SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_2d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_2e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_2f SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_30 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_31 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_32 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_33 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_34 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_35 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_36 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_37 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_38 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_39 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_3a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_3b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_3d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_3e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_3f SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_40 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_41 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define navipi_42 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define optdlg_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tbxalign_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tbxalign_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define drtxtob_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define imoptdlg_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define drawsh_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define drawsh_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define drawsh_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define drawsh_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_09 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins2_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins1_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins1_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuins1_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fumark_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fumark_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fumark_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fumark_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconpol_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconctl_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_09 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define futext_0c SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconrec_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define fuconarc_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define mvtabdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_08 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define mvtabdlg_09 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_08 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_09 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_0a SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define instbdlg_0b SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define lbseldlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define lbseldlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define lbseldlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define lbseldlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define subtdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define subtdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sortdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sortdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define scendlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define scendlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define scendlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define scendlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define inscodlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define inscodlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define inscodlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define inscodlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define inscodlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcldlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcldlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcldlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define autofmt_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define autofmt_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define autofmt_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define autofmt_1d SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define groupdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define groupdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define groupdlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define namecrea_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define namecrea_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcodlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcodlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcodlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcodlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define delcodlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define funcdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define funcdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define funcdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define funcdlg_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_06 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_07 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_08 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_09 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_0b SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_0c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_0e SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_0f SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define funcdlg_10 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define edfundlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define edfundlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define edfundlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define edfundlg_0a SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define edfundlg_0c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define edfundlg_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define inscldlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define inscldlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define inscldlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define hfedtdlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define hfedtdlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define hfedtdlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define namepast_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define namepast_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define namepast_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define namepast_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define namepast_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define mtrindlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define mtrindlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define mtrindlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define mtrindlg_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define mtrindlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define mtrindlg_06 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_06 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_07 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_08 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_09 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_0a SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_0c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_0e SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_10 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_11 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define dbnamdlg_12 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define chartdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_05 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_07 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define chartdlg_0a SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_07 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_08 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_0a SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_0b SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define solvrdlg_0c SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_05 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_08 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_0b SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_0c SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_0d SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define sfiltdlg_0e SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_05 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_07 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_08 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define tabopdlg_0a SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
-#define consdlg_01 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_02 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_03 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_04 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_05 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_06 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_07 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_08 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_09 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_0a SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_0b SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_0c SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_0d SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_0e SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_0f SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define consdlg_10 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_01 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_02 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_03 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_04 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_05 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_06 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_07 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_08 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_09 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_0a SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_0b SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_0c SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_0d SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_0e SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_0f SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_10 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_11 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_12 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_13 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define areasdlg_14 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define filtdlg_05 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define filtdlg_06 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define filtdlg_0c SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define filtdlg_0d SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define filtdlg_0f SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define filtdlg_10 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define pvlaydlg_02 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define pvlaydlg_04 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define pvlaydlg_08 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
-#define pvlaydlg_09 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_0a SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_0b SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_0c SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_0d SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_0e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_0f SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_10 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_11 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_12 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_13 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_15 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_16 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_17 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_18 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_19 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_1b SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_1c SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define pvlaydlg_1e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define tphf_0e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define tphf_0f SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define tptable_03 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_01 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_02 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_03 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_04 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_06 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_07 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_08 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_09 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_0a SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_0b SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_0c SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_0e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_0f SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_10 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_11 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_12 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_13 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_14 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_15 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_16 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_17 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_18 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
-#define argdlg_19 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define argdlg_1a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define anyrefdg_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_04 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_06 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_07 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_08 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_09 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define pfiltdlg_0a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_04 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_06 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_07 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_08 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_09 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_0a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_0b SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_0c SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_0d SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define scenwnd_0e SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define navcitem_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define navcitem_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_06 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_07 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_08 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_09 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpview_0a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpcalc_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpcalc_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpcalc_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpcalc_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
-#define tpcalc_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpcalc_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpcalc_09 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpcalc_0a SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpcalc_0c SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpcalc_0d SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpcalc_0e SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpprint_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpprint_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpprint_04 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpprint_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpprint_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpprint_08 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_03 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_05 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_08 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_09 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_0a SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_0b SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_0c SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_0d SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_0e SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_0f SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_10 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_12 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define tpusrlst_13 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob2_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob2_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob2_03 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob2_05 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob2_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob1_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob1_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob1_03 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drtxtob1_04 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drawsh1_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drawsh3_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define drawsh4_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fupoor_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fupoor_09 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fupoor_0a SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fupoor_0b SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fupoor_0c SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fudraw_04 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fudraw_05 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fusel2_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
-#define fuconstr_06 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_01 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_02 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_03 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_04 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_05 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_06 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_07 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_08 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_09 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_0a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_0b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_0c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_0d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_0e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_0f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_10 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_11 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_12 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_13 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_14 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_15 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_16 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_17 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_18 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_19 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_1a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_1b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_1c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_1e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_1f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsubt_20 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_01 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_02 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_03 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_04 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_05 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_06 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_07 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_08 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_09 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_0a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_0b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_0c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_0d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_0e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_0f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_10 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_11 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_12 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_13 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_14 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_15 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_16 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_17 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_19 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_1b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tpsort_1e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tphfedit_0d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tphfedit_0f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tphfedit_1a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tphfedit_1c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tphfedit_1d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
-#define tphfedit_1f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define tphfedit_20 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define tphfedit_22 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define foptmgr_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define foptmgr_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define foptmgr_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define foptmgr_08 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_08 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_09 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_0a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_0c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_0d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_0e SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_0f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define fieldwnd_10 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define funcutl_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define funcutl_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define funcutl_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define funcutl_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define funcutl_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define funcutl_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define crdlg_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define crdlg_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define crdlg_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define textdlgs_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define textdlgs_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define textdlgs_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_04 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define pvfundlg_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_08 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_0b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_0d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_51 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_52 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_53 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_54 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_55 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_57 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_58 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_59 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_5b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_5c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_5d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_5f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_60 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_6b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_72 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_79 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_7a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_7b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_7c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_7d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_86 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_87 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_8a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_8c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_96 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_97 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_99 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_9a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define global_9b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_27 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_28 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_29 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_2a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_2b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_2c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_2d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_37 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_3e SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_3f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_70 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_7a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
-#define attrib_7b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_7c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_7d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_7e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_7f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_81 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_82 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_84 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_85 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_87 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_89 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_8a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_8b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_8c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_8e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_90 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_92 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_93 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_94 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_95 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_96 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_97 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_99 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_9a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_9b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_9c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_9d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_9e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_9f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_a0 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_a1 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define attrib_a2 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_06 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_07 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define docoptio_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_0b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_0e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_1a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define viewopti_1d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_0b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_0e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define printopt_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_07 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_0e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_0f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_12 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_13 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_17 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_18 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_1b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_21 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_23 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_24 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_26 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_27 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_28 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_29 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_2a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_2b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_2c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_2f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_30 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_31 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_36 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_38 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_3c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_3d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_3e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_40 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_44 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_46 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_47 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_48 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_49 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_4a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_4b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen3_4c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen8_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen8_0f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen8_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define documen8_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_07 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_0b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define appoptio_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define splcfg_01 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define splcfg_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define splcfg_03 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define splcfg_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define splcfg_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define editutil_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define editutil_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define editutil_06 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define editutil_20 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define editutil_21 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define document_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define document_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define document_15 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
-#define document_19 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_1a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_1b SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_1c SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_1e SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_20 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_21 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_23 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_24 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_25 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_26 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_27 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_28 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_29 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_36 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_39 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_3f SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_43 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_46 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_4d SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_4e SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_50 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_59 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_67 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_69 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_6b SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_6c SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_71 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_73 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_74 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_7a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_7f SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_81 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_99 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_9a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_9d SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_a2 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_a4 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_a5 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_a8 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_ac SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_ae SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_b0 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_b1 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_b7 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_b8 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define document_ba SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen7_02 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen7_08 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen7_0a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen7_14 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen7_16 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen4_01 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen4_04 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen4_05 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen4_06 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen4_07 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define documen4_09 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define column3_05 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define column3_07 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
-#define column3_08 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_0a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_0d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_0e SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_15 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_17 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_1a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_1c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define column3_1d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen6_02 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_03 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_04 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_18 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_19 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_1a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_1b SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define documen2_1c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define docpool_04 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define docpool_05 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define patattr_0b SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define patattr_0c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define patattr_0f SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define patattr_13 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define patattr_15 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_06 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_0a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_0b SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_0c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_0d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_13 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_14 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_15 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_17 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_18 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_1c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_1d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_1e SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_20 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_24 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_25 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_26 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
-#define global2_36 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_38 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_39 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_3b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_3c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_3d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_3e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_3f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_40 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_41 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_49 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_52 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_53 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_54 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define global2_55 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_0a SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_0c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_0d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_0e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_0f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_12 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_13 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_14 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_15 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_16 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_19 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_1c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_1d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_1e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define rangenam_1f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define documen5_02 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define documen5_03 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define documen5_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define documen5_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define documen5_06 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define documen5_07 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define stlpool_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define stlpool_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define stlpool_07 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_06 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_0b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_0d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_10 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_11 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_13 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_16 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_18 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_19 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_1a SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_1b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define collect_1c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_01 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_0b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_0e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_2e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_30 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_31 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_39 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell_3e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_02 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_03 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_07 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_08 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_09 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_0a SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_0b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_0f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_11 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
-#define cell2_13 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_14 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_15 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_16 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_17 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_18 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_19 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_1a SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_1b SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_22 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_23 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define cell2_24 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_01 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_02 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_03 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_05 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_08 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_09 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_0b SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_0c SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define rangeutl_11 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_04 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_08 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_0e SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_14 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_17 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_1a SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_1c SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_1e SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define dbcolect_20 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define autoform_02 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define autoform_28 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define autoform_2a SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define autoform_2d SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define autoform_30 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
-#define autoform_31 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define autoform_32 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_02 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_03 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_07 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_08 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_0b SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_0d SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_0e SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_0f SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_10 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_11 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define userlist_12 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_04 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_13 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_17 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_18 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_19 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_1c SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_20 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_21 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_22 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_23 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_24 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_25 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_26 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_29 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_2a SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define drwlayer_2c SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define documen9_05 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define documen9_07 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define documen9_08 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define documen9_0e SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define documen9_0f SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_03 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_04 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_05 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_06 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_07 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_08 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_09 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_0b SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_0c SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_0d SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_0e SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_0f SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_10 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_11 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_12 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_13 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_14 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
-#define pivot_15 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_16 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_17 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_18 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_19 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_1a SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_1b SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_1c SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_1d SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_1e SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_1f SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_20 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_21 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_22 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_2d SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_2e SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_30 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_31 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_32 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_33 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_34 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_35 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_36 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
-#define pivot_37 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot_38 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot_39 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot_3a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot_3b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_02 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_03 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_04 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_05 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_06 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_07 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_08 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_09 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_0a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_0c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_0d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_0f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_10 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_11 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_12 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_14 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_15 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_16 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_17 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_18 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_19 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_1a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_1b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_1c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_1d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_1e SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_1f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_20 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_21 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_23 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_24 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_25 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_26 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_27 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_28 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_29 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_2a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_2b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_2c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_2d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_2e SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_2f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_30 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_31 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define olinetab_32 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define fillinfo_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_02 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_10 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_16 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_1c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_1f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_25 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_27 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_29 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_2a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_2b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_2c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_2d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_2e SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define chartarr_2f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_04 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_08 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_09 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_0a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_10 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_12 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define bcaslot_13 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_02 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_03 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_04 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_05 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_07 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_08 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_09 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
-#define pivot2_0a SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_0b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_0f SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_10 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_11 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_12 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_13 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define pivot2_14 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_01 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_02 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_05 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_06 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_07 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_08 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_09 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_0b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_0d SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_0f SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_10 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_11 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_12 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_13 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_14 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_16 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_17 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_18 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_19 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_1a SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define detfunc_1b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_01 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_02 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_03 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_04 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_07 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_08 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_09 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_0a SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_0b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_0c SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
-#define consoli_0d SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_0e SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_0f SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_10 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_11 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_12 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_13 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define consoli_14 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define zforauto_02 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define zforauto_06 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_01 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_02 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_03 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_04 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_05 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_06 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_07 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_08 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_0a SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define callform_0c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_01 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_03 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_0a SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_0b SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_0c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_1c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_20 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_28 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_2c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_b1 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_b2 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_b8 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_b9 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
-#define interpr4_bc SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr4_be SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr4_bf SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr4_c0 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_27 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_28 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_49 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_4a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_4f SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_50 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_51 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define compiler_55 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define adiasync_02 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define adiasync_04 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define adiasync_05 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_37 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_3a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_3b SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_59 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_5a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_5b SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_5c SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_5e SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_5f SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_85 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_90 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_a6 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_a7 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_a8 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_ab SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_ae SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_b1 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define interpr1_b5 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_67 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_68 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_69 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_72 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_73 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_74 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_80 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table3_93 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_06 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_13 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_14 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_15 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_16 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_17 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_18 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_19 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_24 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_26 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_27 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_29 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_2a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
-#define table1_2f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table1_30 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table1_31 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_05 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_1d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_2e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_2f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_30 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_31 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_32 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_33 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_35 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_36 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_38 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_3b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_42 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_45 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_4e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_51 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_52 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_53 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_56 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_58 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_5c SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_66 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_6d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_6e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_6f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_70 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_71 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_7d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_81 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_82 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_85 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_86 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_87 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_8b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_93 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_94 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_99 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_9a SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_9b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_a2 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_a5 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_a6 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_ab SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_ac SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table2_ad SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table4_0b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table4_0c SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table4_0d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table4_0e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table4_0f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table4_11 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_01 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_02 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_03 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_04 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_05 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_06 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_07 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_08 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_09 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_0a SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_0b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_0c SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
-#define table6_0d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define table5_06 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define table5_09 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_05 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_11 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_12 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_16 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_1a SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_1b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_1c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_24 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_25 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_27 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column2_29 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define refupdat_01 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define refupdat_02 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define refupdat_04 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define refupdat_05 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define refupdat_06 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define refupdat_08 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define markarr_08 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define markarr_0b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define markarr_0c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define markarr_11 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define markarr_12 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_0d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_0e SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_12 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_13 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_14 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_15 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_1b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_1c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_1d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_1f SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_21 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_26 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_29 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_2d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_2e SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define attarray_30 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define token_0b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define token_22 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define token_23 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define token_6a SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define token_6b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define scmatrix_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define scmatrix_08 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define scmatrix_0b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define scmatrix_0c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define scmatrix_10 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define drawpage_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_01 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_02 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_04 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_05 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_06 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define subtotal_07 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column_0d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column_11 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column_14 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column_15 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column_21 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
-#define column_22 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_31 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_32 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_33 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_37 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_3a SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_3b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_3c SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_3d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_3e SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_3f SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_40 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_41 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_42 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_43 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_44 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_61 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_62 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_63 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_6b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_6d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_72 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_76 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_77 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_78 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_7d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_7f SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_80 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define column_84 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_2a SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_2b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_35 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_36 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_37 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_3b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_3d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_44 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_45 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_46 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_47 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_48 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_77 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_b2 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_b5 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
-#define interpr2_b6 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr2_b7 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr2_b8 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_51 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_53 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_54 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_55 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_59 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_5d SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_5e SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_61 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_62 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_63 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_65 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_b6 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr5_b7 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr3_06 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr3_07 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr3_10 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
-#define interpr3_11 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define interpr3_1b SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define interpr3_28 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define ddelink_01 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define ddelink_02 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define ddelink_03 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define ddelink_04 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define ddelink_05 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define excel_04 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_04 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_07 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_08 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_09 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_0a SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_0b SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_0c SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_0d SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_0e SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_0f SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_10 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_11 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_12 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_13 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_14 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_15 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_16 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_17 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_18 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_19 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_1a SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_1b SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_1c SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_1d SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_1e SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_1f SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_20 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_21 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_22 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_23 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_24 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
-#define scflt_25 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_26 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_27 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_28 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_29 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_2a SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_2b SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_2c SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_2d SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_2e SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_2f SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_30 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_31 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_32 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_33 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_34 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_35 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_36 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_37 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
-#define scflt_38 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define scflt_39 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define scflt_3a SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define scflt_3b SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define scflt_3c SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define lotus_01 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_04 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_05 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_06 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_07 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_08 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_10 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_11 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_12 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_13 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_16 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_17 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_18 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_19 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_1a SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_1b SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_1e SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_21 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_22 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_24 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_2d SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_2e SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_2f SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_35 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_3c SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_3d SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_3e SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_3f SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_41 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_43 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_44 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_46 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_4b SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_52 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_55 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define impop_57 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define expop2_01 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define expop2_02 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define expop2_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define functab_02 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define functab_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define functab_04 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define exctools_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define exctools_17 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define scfobj_01 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
-#define lotread_01 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotread_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define tokstack_0d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define tokstack_0e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define tokstack_18 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define filter_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define filter_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_01 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_05 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_06 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_07 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_09 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_0a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_0b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_0e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_0f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_10 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_11 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_12 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_13 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_14 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_15 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define lotimpop_16 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excform_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excform_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excform_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excform_14 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define vfbuff_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define vfbuff_06 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_0f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_10 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_11 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_12 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define fontbuff_13 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_01 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_06 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_07 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_09 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_0c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_0d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_0e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_0f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_10 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_11 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_12 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_14 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_15 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_16 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_17 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_18 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_19 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_1a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_1b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_1c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_1d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_1e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_1f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_20 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_21 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_22 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_23 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_24 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_27 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_28 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_29 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_2a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_2b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_2c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_2d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_2e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_2f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_30 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_31 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_32 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_33 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_34 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_35 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_36 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_37 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_38 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_39 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_3a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_3b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_3c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_3d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_3e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_3f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_40 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_41 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_42 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_43 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_44 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_45 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_46 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_47 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_48 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_49 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_4a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_4b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_4d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_4e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_52 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_53 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_54 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_55 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_56 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_57 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_58 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_5b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_5c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_5d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_5e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_5f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_60 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_61 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_62 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_63 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_64 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
-#define excrecds_65 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_66 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_67 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_68 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_69 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_6a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_6b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_6c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_6d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_6e SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_6f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_70 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_71 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_72 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_73 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_74 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_75 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_76 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_77 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_78 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_79 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_7a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_7b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_7c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_7d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_7e SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_7f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_80 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_81 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_82 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_83 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_84 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excrecds_85 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_01 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_02 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_03 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_05 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_09 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_0b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_0d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_0f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_10 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_11 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_12 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_13 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_14 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_15 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_16 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_17 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_18 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_19 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_1a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_1b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_1d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_1e SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_1f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_22 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_24 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_25 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_26 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_27 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_28 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_29 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excdoc_2a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define frmbase_05 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define spstring_0c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define spstring_0d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_02 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_03 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_04 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_05 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_06 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_07 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_08 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_09 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_0a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_0b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define excobj_0c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define lotattr_01 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define lotattr_02 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
-#define lotattr_03 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_04 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_05 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_06 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_07 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_08 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_0a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_0b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_0c SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_0d SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_0e SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotattr_0f SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_01 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_02 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_07 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_0a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_0b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_0c SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_0d SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_0e SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_0f SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_10 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_12 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_13 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_14 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_15 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_16 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_17 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_19 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_1a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_1b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define tool_1c SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define memory_01 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define memory_02 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_01 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_02 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_03 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_04 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_05 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_06 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_07 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_08 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_09 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_0a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_0b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
-#define lotform_0c SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define lotform_0d SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_01 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_06 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_07 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_08 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_09 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_0a SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_0b SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_10 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_12 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_13 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_14 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_15 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_16 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_17 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_18 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_19 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_1a SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_1b SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_1c SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define exccomp_1d SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_01 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_02 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_03 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_04 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_05 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_06 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_0a SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_0c SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_0d SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_0e SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_0f SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_10 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_11 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_12 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_13 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define op_14 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define teamdlg_01 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define teamdlg_02 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define teamdlg_03 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define teamdlg_04 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
-#define teamdlg_05 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
diff --git a/sc/inc/servuno.hxx b/sc/inc/servuno.hxx
index 785e5e4049d0..e45d80e742c7 100644
--- a/sc/inc/servuno.hxx
+++ b/sc/inc/servuno.hxx
@@ -91,8 +91,9 @@ class ScDocShell;
#define SC_SERVICE_FORMULAPARS 38
#define SC_SERVICE_OPCODEMAPPER 39
#define SC_SERVICE_VBACODENAMEPROVIDER 40
+#define SC_SERVICE_VBAGLOBALS 41
-#define SC_SERVICE_COUNT 41
+#define SC_SERVICE_COUNT 42
#define SC_SERVICE_INVALID USHRT_MAX
diff --git a/sc/inc/sheetdata.hxx b/sc/inc/sheetdata.hxx
index e23402c5fff0..de67786ff9fe 100644
--- a/sc/inc/sheetdata.hxx
+++ b/sc/inc/sheetdata.hxx
@@ -132,6 +132,8 @@ class ScSheetSaveData
ScNoteStyleEntry maPreviousNote;
+ bool mbInSupportedSave;
+
public:
ScSheetSaveData();
~ScSheetSaveData();
@@ -174,6 +176,9 @@ public:
const std::vector<ScTextStyleEntry>& GetNoteParaStyles() const { return maNoteParaStyles; }
const std::vector<ScTextStyleEntry>& GetNoteTextStyles() const { return maNoteTextStyles; }
const std::vector<ScTextStyleEntry>& GetTextStyles() const { return maTextStyles; }
+
+ bool IsInSupportedSave() const;
+ void SetInSupportedSave( bool bSet );
};
#endif
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 442e908542f3..42fcbb063930 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -645,8 +645,8 @@ public:
SCSIZE Query(ScQueryParam& rQueryParam, BOOL bKeepSub);
BOOL CreateQueryParam(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, ScQueryParam& rQueryParam);
- void GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, TypedScStrCollection& rStrings);
- void GetFilteredFilterEntries( SCCOL nCol, SCROW nRow1, SCROW nRow2, const ScQueryParam& rParam, TypedScStrCollection& rStrings );
+ void GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, TypedScStrCollection& rStrings, bool& rHasDates);
+ void GetFilteredFilterEntries( SCCOL nCol, SCROW nRow1, SCROW nRow2, const ScQueryParam& rParam, TypedScStrCollection& rStrings, bool& rHasDates );
BOOL GetDataEntries(SCCOL nCol, SCROW nRow, TypedScStrCollection& rStrings, BOOL bLimit);
BOOL HasColHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow );
diff --git a/sc/source/core/data/cell2.cxx b/sc/source/core/data/cell2.cxx
index 9a3670d2a9e0..4de78c71fe79 100644
--- a/sc/source/core/data/cell2.cxx
+++ b/sc/source/core/data/cell2.cxx
@@ -996,6 +996,8 @@ void ScFormulaCell::UpdateReference(UpdateRefMode eUpdateRefMode,
pDocument->RemoveFromFormulaTree( this ); // update formula count
delete pCode;
pCode = pRangeData->GetCode()->Clone();
+ // #i18937# #i110008# call MoveRelWrap, but with the old position
+ ScCompiler::MoveRelWrap(*pCode, pDocument, aOldPos, pRangeData->GetMaxCol(), pRangeData->GetMaxRow());
ScCompiler aComp2(pDocument, aPos, *pCode);
aComp2.SetGrammar(pDocument->GetGrammar());
aComp2.UpdateSharedFormulaReference( eUpdateRefMode, aOldPos, r,
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index dc206950b3ea..22b75b8d4a6a 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -1467,8 +1467,9 @@ BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
}
-void ScColumn::GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollection& rStrings)
+void ScColumn::GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollection& rStrings, bool& rHasDates)
{
+ bool bHasDates = false;
SvNumberFormatter* pFormatter = pDocument->GetFormatTable();
String aString;
SCROW nRow = 0;
@@ -1504,6 +1505,18 @@ void ScColumn::GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollec
nValue = 0.0;
}
+ if (pFormatter)
+ {
+ short nType = pFormatter->GetType(nFormat);
+ if ((nType & NUMBERFORMAT_DATE) && !(nType & NUMBERFORMAT_TIME))
+ {
+ // special case for date values. Disregard the time
+ // element if the number format is of date type.
+ nValue = ::rtl::math::approxFloor(nValue);
+ bHasDates = true;
+ }
+ }
+
pData = new TypedStrData( aString, nValue, SC_STRTYPE_VALUE );
}
#if 0 // DR
@@ -1522,6 +1535,8 @@ void ScColumn::GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollec
++nIndex;
}
+
+ rHasDates = bHasDates;
}
//
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index fd2b2f1fd309..557f181c9d8f 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1263,7 +1263,8 @@ BOOL ScDocument::HasRowHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol,
// GetFilterEntries - Eintraege fuer AutoFilter-Listbox
//
-BOOL ScDocument::GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, TypedScStrCollection& rStrings, bool bFilter )
+BOOL ScDocument::GetFilterEntries(
+ SCCOL nCol, SCROW nRow, SCTAB nTab, bool bFilter, TypedScStrCollection& rStrings, bool& rHasDates)
{
if ( ValidTab(nTab) && pTab[nTab] && pDBCollection )
{
@@ -1300,11 +1301,11 @@ BOOL ScDocument::GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, TypedScSt
if ( bFilter )
{
- pTab[nTab]->GetFilteredFilterEntries( nCol, nStartRow, nEndRow, aParam, rStrings );
+ pTab[nTab]->GetFilteredFilterEntries( nCol, nStartRow, nEndRow, aParam, rStrings, rHasDates );
}
else
{
- pTab[nTab]->GetFilterEntries( nCol, nStartRow, nEndRow, rStrings );
+ pTab[nTab]->GetFilterEntries( nCol, nStartRow, nEndRow, rStrings, rHasDates );
}
return TRUE;
@@ -1319,11 +1320,11 @@ BOOL ScDocument::GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, TypedScSt
//
BOOL ScDocument::GetFilterEntriesArea( SCCOL nCol, SCROW nStartRow, SCROW nEndRow,
- SCTAB nTab, TypedScStrCollection& rStrings )
+ SCTAB nTab, TypedScStrCollection& rStrings, bool& rHasDates )
{
if ( ValidTab(nTab) && pTab[nTab] )
{
- pTab[nTab]->GetFilterEntries( nCol, nStartRow, nEndRow, rStrings );
+ pTab[nTab]->GetFilterEntries( nCol, nStartRow, nEndRow, rStrings, rHasDates );
return TRUE;
}
diff --git a/sc/source/core/data/dpcachetable.cxx b/sc/source/core/data/dpcachetable.cxx
index ad5e921cb278..d97900e6b904 100644
--- a/sc/source/core/data/dpcachetable.cxx
+++ b/sc/source/core/data/dpcachetable.cxx
@@ -183,39 +183,9 @@ sal_Int32 ScDPCacheTable::getColSize() const
return GetCache()->GetColumnCount();
}
-namespace {
-
-/**
- * While the macro interpret level is incremented, the formula cells are
- * (semi-)guaranteed to be interpreted.
- */
-class MacroInterpretIncrementer
-{
-public:
- MacroInterpretIncrementer(ScDocument* pDoc) :
- mpDoc(pDoc)
- {
- mpDoc->IncMacroInterpretLevel();
- }
- ~MacroInterpretIncrementer()
- {
- mpDoc->DecMacroInterpretLevel();
- }
-private:
- ScDocument* mpDoc;
-};
-
-}
-
void ScDPCacheTable::fillTable( const ScQueryParam& rQuery, BOOL* pSpecial,
bool bIgnoreEmptyRows, bool bRepeatIfEmpty )
{
- // Make sure the formula cells within the data range are interpreted
- // during this call, for this method may be called from the interpretation
- // of GETPIVOTDATA, which disables nested formula interpretation without
- // increasing the macro level.
- MacroInterpretIncrementer aMacroInc(GetCache()->GetDoc());
-
if ( mpCache == NULL )
InitNoneCache( NULL );
//check cache
diff --git a/sc/source/core/data/dptablecache.cxx b/sc/source/core/data/dptablecache.cxx
index 42090e5203a2..fc9cf2b99a10 100755
--- a/sc/source/core/data/dptablecache.cxx
+++ b/sc/source/core/data/dptablecache.cxx
@@ -304,7 +304,7 @@ void ScDPItemData::dump() const
DBG_TRACE1( "Numberformat= %o", nNumFormat );
DBG_TRACESTR(aString );
DBG_TRACE1( "fValue= %f", fValue );
- DBG_TRACE1( "bHasValue= %d", bHasValue ? 1:0);
+ DBG_TRACE1( "mbFlag= %d", mbFlag);
}
#endif
//End
@@ -489,8 +489,40 @@ bool ScDPTableDataCache::IsValid() const
}
// -----------------------------------------------------------------------
+
+namespace {
+
+/**
+ * While the macro interpret level is incremented, the formula cells are
+ * (semi-)guaranteed to be interpreted.
+ */
+class MacroInterpretIncrementer
+{
+public:
+ MacroInterpretIncrementer(ScDocument* pDoc) :
+ mpDoc(pDoc)
+ {
+ mpDoc->IncMacroInterpretLevel();
+ }
+ ~MacroInterpretIncrementer()
+ {
+ mpDoc->DecMacroInterpretLevel();
+ }
+private:
+ ScDocument* mpDoc;
+};
+
+}
+
+// -----------------------------------------------------------------------
bool ScDPTableDataCache::InitFromDoc( ScDocument* pDoc, const ScRange& rRange )
{
+ // Make sure the formula cells within the data range are interpreted
+ // during this call, for this method may be called from the interpretation
+ // of GETPIVOTDATA, which disables nested formula interpretation without
+ // increasing the macro level.
+ MacroInterpretIncrementer aMacroInc(pDoc);
+
//
SCROW nStartRow = rRange.aStart.Row(); // start of data
SCROW nEndRow = rRange.aEnd.Row();
diff --git a/sc/source/core/data/global2.cxx b/sc/source/core/data/global2.cxx
index d32ebdafbf78..3234340ae9dd 100644
--- a/sc/source/core/data/global2.cxx
+++ b/sc/source/core/data/global2.cxx
@@ -145,30 +145,32 @@ BOOL ScImportParam::operator==( const ScImportParam& rOther ) const
//------------------------------------------------------------------------
// struct ScQueryParam:
-ScQueryEntry::ScQueryEntry()
+ScQueryEntry::ScQueryEntry() :
+ bDoQuery(FALSE),
+ bQueryByString(FALSE),
+ bQueryByDate(false),
+ nField(0),
+ eOp(SC_EQUAL),
+ eConnect(SC_AND),
+ pStr(new String),
+ nVal(0.0),
+ pSearchParam(NULL),
+ pSearchText(NULL)
+{
+}
+
+ScQueryEntry::ScQueryEntry(const ScQueryEntry& r) :
+ bDoQuery(r.bDoQuery),
+ bQueryByString(r.bQueryByString),
+ bQueryByDate(r.bQueryByDate),
+ nField(r.nField),
+ eOp(r.eOp),
+ eConnect(r.eConnect),
+ pStr(new String(*r.pStr)),
+ nVal(r.nVal),
+ pSearchParam(NULL),
+ pSearchText(NULL)
{
- bDoQuery = FALSE;
- bQueryByString = FALSE;
- eOp = SC_EQUAL;
- eConnect = SC_AND;
- nField = 0;
- nVal = 0.0;
- pStr = new String;
- pSearchParam = NULL;
- pSearchText = NULL;
-}
-
-ScQueryEntry::ScQueryEntry(const ScQueryEntry& r)
-{
- bDoQuery = r.bDoQuery;
- bQueryByString = r.bQueryByString;
- eOp = r.eOp;
- eConnect = r.eConnect;
- nField = r.nField;
- nVal = r.nVal;
- pStr = new String(*r.pStr);
- pSearchParam = NULL;
- pSearchText = NULL;
}
ScQueryEntry::~ScQueryEntry()
@@ -185,6 +187,7 @@ ScQueryEntry& ScQueryEntry::operator=( const ScQueryEntry& r )
{
bDoQuery = r.bDoQuery;
bQueryByString = r.bQueryByString;
+ bQueryByDate = r.bQueryByDate;
eOp = r.eOp;
eConnect = r.eConnect;
nField = r.nField;
@@ -205,6 +208,7 @@ void ScQueryEntry::Clear()
{
bDoQuery = FALSE;
bQueryByString = FALSE;
+ bQueryByDate = false;
eOp = SC_EQUAL;
eConnect = SC_AND;
nField = 0;
@@ -223,6 +227,7 @@ BOOL ScQueryEntry::operator==( const ScQueryEntry& r ) const
{
return bDoQuery == r.bDoQuery
&& bQueryByString == r.bQueryByString
+ && bQueryByDate == r.bQueryByDate
&& eOp == r.eOp
&& eConnect == r.eConnect
&& nField == r.nField
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 09a9f41929b5..90993367dde6 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -31,6 +31,7 @@
#include <rtl/math.hxx>
#include <unotools/textsearch.hxx>
#include <svl/zforlist.hxx>
+#include <svl/zformat.hxx>
#include <unotools/charclass.hxx>
#include <unotools/collatorwrapper.hxx>
#include <com/sun/star/i18n/CollatorOptions.hpp>
@@ -989,6 +990,35 @@ BOOL ScTable::ValidQuery(SCROW nRow, const ScQueryParam& rParam,
}
else
nCellVal = GetValue( static_cast<SCCOL>(rEntry.nField), nRow );
+
+ /* NOTE: lcl_PrepareQuery() prepares a filter query such that if a
+ * date+time format was queried rEntry.bQueryByDate is not set. In
+ * case other queries wanted to use this mechanism they should do
+ * the same, in other words only if rEntry.nVal is an integer value
+ * rEntry.bQueryByDate should be true and the time fraction be
+ * stripped here. */
+ if (rEntry.bQueryByDate)
+ {
+ sal_uInt32 nNumFmt = GetNumberFormat(static_cast<SCCOL>(rEntry.nField), nRow);
+ const SvNumberformat* pEntry = pDocument->GetFormatTable()->GetEntry(nNumFmt);
+ if (pEntry)
+ {
+ short nNumFmtType = pEntry->GetType();
+ /* NOTE: Omitting the check for absence of
+ * NUMBERFORMAT_TIME would include also date+time formatted
+ * values of the same day. That may be desired in some
+ * cases, querying all time values of a day, but confusing
+ * in other cases. A user can always setup a standard
+ * filter query for x >= date AND x < date+1 */
+ if ((nNumFmtType & NUMBERFORMAT_DATE) && !(nNumFmtType & NUMBERFORMAT_TIME))
+ {
+ // The format is of date type. Strip off the time
+ // element.
+ nCellVal = ::rtl::math::approxFloor(nCellVal);
+ }
+ }
+ }
+
switch (rEntry.eOp)
{
case SC_EQUAL :
@@ -1393,6 +1423,23 @@ static void lcl_PrepareQuery( ScDocument* pDoc, ScTable* pTab, ScQueryParam& rPa
sal_uInt32 nIndex = 0;
rEntry.bQueryByString = !( pDoc->GetFormatTable()->
IsNumberFormat( *rEntry.pStr, nIndex, rEntry.nVal ) );
+ if (rEntry.bQueryByDate)
+ {
+ if (!rEntry.bQueryByString && ((nIndex % SV_COUNTRY_LANGUAGE_OFFSET) != 0))
+ {
+ const SvNumberformat* pEntry = pDoc->GetFormatTable()->GetEntry(nIndex);
+ if (pEntry)
+ {
+ short nNumFmtType = pEntry->GetType();
+ if (!((nNumFmtType & NUMBERFORMAT_DATE) && !(nNumFmtType & NUMBERFORMAT_TIME)))
+ rEntry.bQueryByDate = false; // not a date only
+ }
+ else
+ rEntry.bQueryByDate = false; // what the ... not a date
+ }
+ else
+ rEntry.bQueryByDate = false; // not a date
+ }
}
else
{
@@ -1776,12 +1823,13 @@ BOOL ScTable::HasRowHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL /* nEndCol *
return TRUE;
}
-void ScTable::GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, TypedScStrCollection& rStrings)
+void ScTable::GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, TypedScStrCollection& rStrings, bool& rHasDates)
{
- aCol[nCol].GetFilterEntries( nRow1, nRow2, rStrings );
+ aCol[nCol].GetFilterEntries( nRow1, nRow2, rStrings, rHasDates );
}
-void ScTable::GetFilteredFilterEntries( SCCOL nCol, SCROW nRow1, SCROW nRow2, const ScQueryParam& rParam, TypedScStrCollection& rStrings )
+void ScTable::GetFilteredFilterEntries(
+ SCCOL nCol, SCROW nRow1, SCROW nRow2, const ScQueryParam& rParam, TypedScStrCollection& rStrings, bool& rHasDates )
{
// remove the entry for this column from the query parameter
ScQueryParam aParam( rParam );
@@ -1799,15 +1847,18 @@ void ScTable::GetFilteredFilterEntries( SCCOL nCol, SCROW nRow1, SCROW nRow2, co
BOOL* pSpecial = new BOOL[nEntryCount];
lcl_PrepareQuery( pDocument, this, aParam, pSpecial );
-
+ bool bHasDates = false;
for ( SCROW j = nRow1; j <= nRow2; ++j )
{
if ( ValidQuery( j, aParam, pSpecial ) )
{
- aCol[nCol].GetFilterEntries( j, j, rStrings );
+ bool bThisHasDates = false;
+ aCol[nCol].GetFilterEntries( j, j, rStrings, bThisHasDates );
+ bHasDates |= bThisHasDates;
}
}
+ rHasDates = bHasDates;
delete[] pSpecial;
}
diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx
index 2394bfb56799..2075129e4f6e 100644
--- a/sc/source/core/inc/interpre.hxx
+++ b/sc/source/core/inc/interpre.hxx
@@ -171,6 +171,7 @@ private:
short nFuncFmtType; // NumberFormatType of a function
short nCurFmtType; // current NumberFormatType
short nRetFmtType; // NumberFormatType of an expression
+ USHORT mnStringNoValueError; // the error set in ConvertStringToValue() if no value
BOOL glSubTotal; // flag for subtotal functions
BYTE cPar; // current count of parameters
BOOL bCalcAsShown; // precision as shown
diff --git a/sc/source/core/tool/dbcolect.cxx b/sc/source/core/tool/dbcolect.cxx
index 4eea4db97a0a..7f94cb64c827 100644
--- a/sc/source/core/tool/dbcolect.cxx
+++ b/sc/source/core/tool/dbcolect.cxx
@@ -155,6 +155,7 @@ ScDBData::ScDBData( const ScDBData& rData ) :
nQueryField[i] = rData.nQueryField[i];
eQueryOp[i] = rData.eQueryOp[i];
bQueryByString[i] = rData.bQueryByString[i];
+ bQueryByDate[i] = rData.bQueryByDate[i];
pQueryStr[i] = new String( *(rData.pQueryStr[i]) );
nQueryVal[i] = rData.nQueryVal[i];
eQueryConnect[i] = rData.eQueryConnect[i];
@@ -244,6 +245,7 @@ ScDBData& ScDBData::operator= (const ScDBData& rData)
nQueryField[i] = rData.nQueryField[i];
eQueryOp[i] = rData.eQueryOp[i];
bQueryByString[i] = rData.bQueryByString[i];
+ bQueryByDate[i] = rData.bQueryByDate[i];
*pQueryStr[i] = *rData.pQueryStr[i];
nQueryVal[i] = rData.nQueryVal[i];
eQueryConnect[i] = rData.eQueryConnect[i];
@@ -512,6 +514,7 @@ void ScDBData::GetQueryParam( ScQueryParam& rQueryParam ) const
rEntry.nField = nQueryField[i];
rEntry.eOp = eQueryOp[i];
rEntry.bQueryByString = bQueryByString[i];
+ rEntry.bQueryByDate = bQueryByDate[i];
*rEntry.pStr = *pQueryStr[i];
rEntry.nVal = nQueryVal[i];
rEntry.eConnect = eQueryConnect[i];
@@ -543,6 +546,7 @@ void ScDBData::SetQueryParam(const ScQueryParam& rQueryParam)
nQueryField[i] = rEntry.nField;
eQueryOp[i] = rEntry.eOp;
bQueryByString[i] = rEntry.bQueryByString;
+ bQueryByDate[i] = rEntry.bQueryByDate;
*pQueryStr[i] = *rEntry.pStr;
nQueryVal[i] = rEntry.nVal;
eQueryConnect[i] = rEntry.eConnect;
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index 94cd5c1a02e9..30aa0b8aa13e 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -2488,7 +2488,14 @@ void ScInterpreter::ScN()
Pop();
}
else
+ {
+ // Temporarily override the ConvertStringToValue() error for
+ // GetCellValue() / GetCellValueOrZero()
+ USHORT nSErr = mnStringNoValueError;
+ mnStringNoValueError = errCellNoValue;
fVal = GetDouble();
+ mnStringNoValueError = nSErr;
+ }
if ( nGlobalError == NOTAVAILABLE || nGlobalError == errIllegalArgument )
nGlobalError = 0; // N(#NA) and N("text") are ok
if ( !nGlobalError && nErr != NOTAVAILABLE )
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index ffba9aafc511..c576cd5ca6c3 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -261,7 +261,7 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
while (p < pStop && *p == ' ')
++p;
if (p < pStop)
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
break;
case '-':
case ':':
@@ -281,7 +281,7 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
while (p < pStop && *p == ' ')
++p;
if (p < pStop && !CharClass::isAsciiDigit(*p))
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
p = pLastStart;
while (p < pStop && !nGlobalError && eState < blank)
{
@@ -291,7 +291,7 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
{
// Maximum 2 digits per unit, except fractions.
if (p - pLastStart >= 2 && eState != fraction)
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
}
else if (p > pLastStart)
{
@@ -300,7 +300,7 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
{
nUnit[eState] = aStr.copy( pLastStart - pStart, p - pLastStart).toInt32();
if (nLimit[eState] && nLimit[eState] < nUnit[eState])
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
}
pLastStart = p + 1; // hypothetical next start
// Delimiters must match, a trailing delimiter
@@ -311,11 +311,11 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
// Month must be followed by separator and
// day, no trailing blanks.
if (*p != '-' || (p+1 == pStop))
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
break;
case day:
if ((*p != 'T' || (p+1 == pStop)) && *p != ' ')
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
// Take one blank as a valid delimiter
// between date and time.
break;
@@ -323,17 +323,17 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
// Hour must be followed by separator and
// minute, no trailing blanks.
if (*p != ':' || (p+1 == pStop))
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
break;
case minute:
if ((*p != ':' || (p+1 == pStop)) && *p != ' ')
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
if (*p == ' ')
eState = done;
break;
case second:
if (((*p != ',' && *p != '.') || (p+1 == pStop)) && *p != ' ')
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
if (*p == ' ')
eState = done;
break;
@@ -344,13 +344,13 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
case done:
case blank:
case stop:
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
break;
}
eState = static_cast<State>(eState + 1);
}
else
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
++p;
}
if (eState == blank)
@@ -358,14 +358,14 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
while (p < pStop && *p == ' ')
++p;
if (p < pStop)
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
eState = stop;
}
// Month without day, or hour without minute.
if (eState == month || (eState == day && p <= pLastStart) ||
eState == hour || (eState == minute && p <= pLastStart))
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
if (!nGlobalError)
{
@@ -374,10 +374,10 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
{
nUnit[eState] = aStr.copy( pLastStart - pStart, p - pLastStart).toInt32();
if (nLimit[eState] && nLimit[eState] < nUnit[eState])
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
}
if (bDate && nUnit[hour] > 23)
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
if (!nGlobalError)
{
if (bDate && nUnit[day] == 0)
@@ -396,7 +396,7 @@ double ScInterpreter::ConvertStringToValue( const String& rStr )
}
break;
default:
- SetError( errNoValue);
+ SetError( mnStringNoValueError);
}
if (nGlobalError)
fValue = 0.0;
@@ -3549,6 +3549,7 @@ ScInterpreter::ScInterpreter( ScFormulaCell* pCell, ScDocument* pDoc,
pTokenMatrixMap( NULL ),
pMyFormulaCell( pCell ),
pFormatter( pDoc->GetFormatTable() ),
+ mnStringNoValueError( errNoValue),
bCalcAsShown( pDoc->GetDocOptions().IsCalcAsShown() )
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScTTT" );
diff --git a/sc/source/filter/excel/excimp8.cxx b/sc/source/filter/excel/excimp8.cxx
index e424ad2d95fe..45959130defc 100644
--- a/sc/source/filter/excel/excimp8.cxx
+++ b/sc/source/filter/excel/excimp8.cxx
@@ -271,6 +271,17 @@ void ImportExcel8::ReadBasic( void )
{
SvxImportMSVBasic aBasicImport( *pShell, *xRootStrg, bLoadCode, bLoadStrg );
bool bAsComment = !bLoadExecutable;
+ if ( !bAsComment )
+ {
+ uno::Any aGlobs;
+ uno::Sequence< uno::Any > aArgs(1);
+ aArgs[ 0 ] <<= pShell->GetModel();
+ aGlobs <<= ::comphelper::getProcessServiceFactory()->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.excel.Globals" ) ), aArgs );
+ pShell->GetBasicManager()->SetGlobalUNOConstant( "VBAGlobals", aGlobs );
+ BasicManager* pAppMgr = SFX_APP()->GetBasicManager();
+ if ( pAppMgr )
+ pAppMgr->SetGlobalUNOConstant( "ThisExcelDoc", aArgs[ 0 ] );
+ }
aBasicImport.Import( EXC_STORAGE_VBA_PROJECT, EXC_STORAGE_VBA, bAsComment );
}
}
diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx
index 2716dc216ed1..7b0652e7cce9 100644
--- a/sc/source/filter/html/htmlpars.cxx
+++ b/sc/source/filter/html/htmlpars.cxx
@@ -2562,8 +2562,9 @@ void ScHTMLTable::SetDocSize( ScHTMLOrient eOrient, SCCOLROW nCellPos, SCCOLROW
while( nIndex >= rSizes.size() )
rSizes.push_back( rSizes.empty() ? 1 : (rSizes.back() + 1) );
// update size of passed position and all following
+ // #i109987# only grow, don't shrink - use the largest needed size
SCsCOLROW nDiff = nSize - ((nIndex == 0) ? rSizes.front() : (rSizes[ nIndex ] - rSizes[ nIndex - 1 ]));
- if( nDiff != 0 )
+ if( nDiff > 0 )
for( ScSizeVec::iterator aIt = rSizes.begin() + nIndex, aEnd = rSizes.end(); aIt != aEnd; ++aIt )
*aIt += nDiff;
}
diff --git a/sc/source/filter/xml/sheetdata.cxx b/sc/source/filter/xml/sheetdata.cxx
index 66b1c2579dd4..947c1370fa4b 100644
--- a/sc/source/filter/xml/sheetdata.cxx
+++ b/sc/source/filter/xml/sheetdata.cxx
@@ -43,7 +43,8 @@
ScSheetSaveData::ScSheetSaveData() :
mnStartTab( -1 ),
mnStartOffset( -1 ),
- maPreviousNote( rtl::OUString(), rtl::OUString(), ScAddress(ScAddress::INITIALIZE_INVALID) )
+ maPreviousNote( rtl::OUString(), rtl::OUString(), ScAddress(ScAddress::INITIALIZE_INVALID) ),
+ mbInSupportedSave( false )
{
}
@@ -270,3 +271,13 @@ bool ScSheetSaveData::AddLoadedNamespaces( SvXMLNamespaceMap& rNamespaces ) cons
return true; // success
}
+bool ScSheetSaveData::IsInSupportedSave() const
+{
+ return mbInSupportedSave;
+}
+
+void ScSheetSaveData::SetInSupportedSave( bool bSet )
+{
+ mbInSupportedSave = bSet;
+}
+
diff --git a/sc/source/filter/xml/xmlwrap.cxx b/sc/source/filter/xml/xmlwrap.cxx
index fde7f00bb05a..f21ed7d55ac2 100644
--- a/sc/source/filter/xml/xmlwrap.cxx
+++ b/sc/source/filter/xml/xmlwrap.cxx
@@ -78,6 +78,8 @@
#include "globstr.hrc"
#include "scerrors.hxx"
#include "XMLExportSharedData.hxx"
+#include "docuno.hxx"
+#include "sheetdata.hxx"
#define MAP_LEN(x) x, sizeof(x) - 1
@@ -738,16 +740,23 @@ sal_Bool ScXMLImportWrapper::ExportToComponent(uno::Reference<lang::XMultiServic
uno::Reference<embed::XStorage> xTmpStorage = rDoc.GetDocumentShell()->GetStorage();
uno::Reference<io::XStream> xSrcStream;
uno::Reference<io::XInputStream> xSrcInput;
- try
- {
- if (xTmpStorage.is())
- xSrcStream = xTmpStorage->openStreamElement( sName, embed::ElementModes::READ );
- if (xSrcStream.is())
- xSrcInput = xSrcStream->getInputStream();
- }
- catch (uno::Exception&)
+
+ // #i108978# If an embedded object is saved and no events are notified, don't use the stream
+ // because without the ...DONE events, stream positions aren't updated.
+ ScSheetSaveData* pSheetData = ScModelObj::getImplementation(xModel)->GetSheetSaveData();
+ if (pSheetData && pSheetData->IsInSupportedSave())
{
- // stream not available (for example, password protected) - save normally (xSrcInput is null)
+ try
+ {
+ if (xTmpStorage.is())
+ xSrcStream = xTmpStorage->openStreamElement( sName, embed::ElementModes::READ );
+ if (xSrcStream.is())
+ xSrcInput = xSrcStream->getInputStream();
+ }
+ catch (uno::Exception&)
+ {
+ // stream not available (for example, password protected) - save normally (xSrcInput is null)
+ }
}
pExport->SetSourceStream( xSrcInput );
@@ -755,7 +764,10 @@ sal_Bool ScXMLImportWrapper::ExportToComponent(uno::Reference<lang::XMultiServic
pExport->SetSourceStream( uno::Reference<io::XInputStream>() );
// If there was an error, reset all stream flags, so the next save attempt will use normal saving.
- if (!bRet)
+ // #i110692# For embedded objects, the stream may be unavailable for one save operation (m_pAntiImpl)
+ // and become available again later. But after saving normally once, the stream positions aren't
+ // valid anymore, so the flags also have to be reset if the stream wasn't available.
+ if ( !bRet || !xSrcInput.is() )
{
SCTAB nTabCount = rDoc.GetTableCount();
for (SCTAB nTab=0; nTab<nTabCount; nTab++)
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 485ea4b88589..40b65ce401ad 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -189,6 +189,14 @@ handle_r1c1:
if ( (nFlags & SCA_TAB2_3D) == 0 )
aRange.aEnd.SetTab( aRange.aStart.Tab() );
+ if ( ( nFlags & ( SCA_VALID_COL2 | SCA_VALID_ROW2 | SCA_VALID_TAB2 ) ) == 0 )
+ {
+ // #i73766# if a single ref was parsed, set the same "abs" flags for ref2,
+ // so Format doesn't output a double ref because of different flags.
+ USHORT nAbsFlags = nFlags & ( SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE );
+ nFlags |= nAbsFlags << 4;
+ }
+
if (!nCount)
{
pEngine->SetUpdateMode( FALSE );
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index 56878f623828..b5dd2f3242c2 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -448,24 +448,27 @@ void ScFilterDlg::UpdateValueList( USHORT nList )
SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
if (!pEntryLists[nColumn])
{
+ USHORT nOffset = GetSliderPos();
SCTAB nTab = nSrcTab;
SCROW nFirstRow = theQueryData.nRow1;
SCROW nLastRow = theQueryData.nRow2;
+ mbHasDates[nOffset+nList-1] = false;
// erstmal ohne die erste Zeile
pEntryLists[nColumn] = new TypedScStrCollection( 128, 128 );
pEntryLists[nColumn]->SetCaseSensitive( aBtnCase.IsChecked() );
pDoc->GetFilterEntriesArea( nColumn, nFirstRow+1, nLastRow,
- nTab, *pEntryLists[nColumn] );
+ nTab, *pEntryLists[nColumn], mbHasDates[nOffset+nList-1] );
// Eintrag fuer die erste Zeile
//! Eintrag (pHdrEntry) ohne Collection erzeugen?
nHeaderPos[nColumn] = USHRT_MAX;
TypedScStrCollection aHdrColl( 1, 1 );
+ bool bDummy = false;
pDoc->GetFilterEntriesArea( nColumn, nFirstRow, nFirstRow,
- nTab, aHdrColl );
+ nTab, aHdrColl, bDummy );
TypedStrData* pHdrEntry = aHdrColl[0];
if ( pHdrEntry )
{
@@ -1061,7 +1064,8 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, ComboBox*, pEd )
static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
ScQueryOp eOp = (ScQueryOp)pLbCond->GetSelectEntryPos();
- rEntry.eOp = eOp;
+ rEntry.eOp = eOp;
+ rEntry.bQueryByDate = mbHasDates[nQE];
}
}
diff --git a/sc/source/ui/dbgui/makefile.mk b/sc/source/ui/dbgui/makefile.mk
index 2d4fa71f690e..1e7000d0cb07 100644
--- a/sc/source/ui/dbgui/makefile.mk
+++ b/sc/source/ui/dbgui/makefile.mk
@@ -106,7 +106,6 @@ LIB1OBJFILES = \
$(SLO)$/expftext.obj \
$(SLO)$/fieldwnd.obj \
$(SLO)$/pvlaydlg.obj \
- $(SLO)$/pvfundlg.obj \
$(SLO)$/consdlg.obj \
$(SLO)$/imoptdlg.obj \
$(SLO)$/csvsplits.obj \
diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx
index cde18fcc3b52..d590ffb83457 100644
--- a/sc/source/ui/dbgui/pfiltdlg.cxx
+++ b/sc/source/ui/dbgui/pfiltdlg.cxx
@@ -349,11 +349,12 @@ void ScPivotFilterDlg::UpdateValueList( USHORT nList )
SCROW nFirstRow = theQueryData.nRow1;
SCROW nLastRow = theQueryData.nRow2;
nFirstRow++;
+ bool bHasDates = false;
pEntryLists[nColumn] = new TypedScStrCollection( 128, 128 );
pEntryLists[nColumn]->SetCaseSensitive( aBtnCase.IsChecked() );
pDoc->GetFilterEntriesArea( nColumn, nFirstRow, nLastRow,
- nTab, *pEntryLists[nColumn] );
+ nTab, *pEntryLists[nColumn], bHasDates );
}
TypedScStrCollection* pColl = pEntryLists[nColumn];
diff --git a/sc/source/ui/dbgui/pvfundlg.cxx b/sc/source/ui/dbgui/pvfundlg.cxx
index 03de0b8914a3..6b04993ba0bc 100644
--- a/sc/source/ui/dbgui/pvfundlg.cxx
+++ b/sc/source/ui/dbgui/pvfundlg.cxx
@@ -28,6 +28,8 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
+#undef SC_DLLIMPLEMENTATION
+
#include "pvfundlg.hxx"
#include <com/sun/star/sheet/DataPilotFieldReferenceType.hpp>
diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx
index 5fdf386323d9..1ee02badefe1 100644
--- a/sc/source/ui/dbgui/validate.cxx
+++ b/sc/source/ui/dbgui/validate.cxx
@@ -581,7 +581,7 @@ void ScTPValidationValue::TidyListBoxes()
pWnd = GetChild(0);
- while( std::find( alstOrder.begin(), alstOrder.end(), pWnd ) != alstOrder.end() && NULL != ( pWnd = pWnd->GetWindow( WINDOW_NEXT) ) );
+ while( std::find( alstOrder.begin(), alstOrder.end(), pWnd ) != alstOrder.end() && NULL != ( pWnd = pWnd->GetWindow( WINDOW_NEXT) ) ) ;
if ( pWnd )
{
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 821b2a6ad880..135bbcdace49 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -356,6 +356,7 @@ void ScDocShell::AfterXMLLoading(sal_Bool bRet)
}
else
aDocument.SetInsertingFromOtherDoc( FALSE );
+#if 0 // disable load of vba related libraries
// add vba globals ( if they are availabl )
uno::Any aGlobs;
uno::Sequence< uno::Any > aArgs(1);
@@ -376,7 +377,7 @@ void ScDocShell::AfterXMLLoading(sal_Bool bRet)
BasicManager* pAppMgr = SFX_APP()->GetBasicManager();
if ( pAppMgr )
pAppMgr->SetGlobalUNOConstant( "ThisExcelDoc", aArgs[ 0 ] );
-
+#endif
aDocument.SetImportingXML( FALSE );
aDocument.EnableExecuteLink( true );
aDocument.EnableUndo( TRUE );
@@ -767,19 +768,38 @@ void __EXPORT ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint )
if ( !bSuccess )
SetError( ERRCODE_IO_ABORT, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) ); // this error code will produce no error message, but will break the further saving process
}
+ if (pSheetSaveData)
+ pSheetSaveData->SetInSupportedSave(true);
}
break;
+ case SFX_EVENT_SAVEASDOC:
+ case SFX_EVENT_SAVETODOC:
+ // #i108978# If no event is sent before saving, there will also be no "...DONE" event,
+ // and SAVE/SAVEAS can't be distinguished from SAVETO. So stream copying is only enabled
+ // if there is a SAVE/SAVEAS/SAVETO event first.
+ if (pSheetSaveData)
+ pSheetSaveData->SetInSupportedSave(true);
+ break;
case SFX_EVENT_SAVEDOCDONE:
{
if ( IsDocShared() && !SC_MOD()->IsInSharedDocSaving() )
{
}
UseSheetSaveEntries(); // use positions from saved file for next saving
+ if (pSheetSaveData)
+ pSheetSaveData->SetInSupportedSave(false);
}
break;
case SFX_EVENT_SAVEASDOCDONE:
// new positions are used after "save" and "save as", but not "save to"
UseSheetSaveEntries(); // use positions from saved file for next saving
+ if (pSheetSaveData)
+ pSheetSaveData->SetInSupportedSave(false);
+ break;
+ case SFX_EVENT_SAVETODOCDONE:
+ // only reset the flag, don't use the new positions
+ if (pSheetSaveData)
+ pSheetSaveData->SetInSupportedSave(false);
break;
default:
{
diff --git a/sc/source/ui/docshell/docsh2.cxx b/sc/source/ui/docshell/docsh2.cxx
index 4b76c18edbe6..9e3ed217382f 100644
--- a/sc/source/ui/docshell/docsh2.cxx
+++ b/sc/source/ui/docshell/docsh2.cxx
@@ -102,6 +102,7 @@ BOOL __EXPORT ScDocShell::InitNew( const uno::Reference < embed::XStorage >& xSt
InitItems();
CalcOutputFactor();
+#if 0
uno::Any aGlobs;
uno::Sequence< uno::Any > aArgs(1);
aArgs[ 0 ] <<= GetModel();
@@ -121,6 +122,7 @@ BOOL __EXPORT ScDocShell::InitNew( const uno::Reference < embed::XStorage >& xSt
BasicManager* pAppMgr = SFX_APP()->GetBasicManager();
if ( pAppMgr )
pAppMgr->SetGlobalUNOConstant( "ThisExcelDoc", aArgs[ 0 ] );
+#endif
return bRet;
}
diff --git a/sc/source/ui/docshell/docsh5.cxx b/sc/source/ui/docshell/docsh5.cxx
index 1bbf9437bc1c..061ece5efc90 100644
--- a/sc/source/ui/docshell/docsh5.cxx
+++ b/sc/source/ui/docshell/docsh5.cxx
@@ -97,8 +97,9 @@ void ScDocShell::ErrorMessage( USHORT nGlobStrId )
BOOL ScDocShell::IsEditable() const
{
// import into read-only document is possible - must be extended if other filters use api
+ // #i108547# MSOOXML filter uses "IsChangeReadOnlyEnabled" property
- return !IsReadOnly() || aDocument.IsImportingXML();
+ return !IsReadOnly() || aDocument.IsImportingXML() || aDocument.IsChangeReadOnlyEnabled();
}
void ScDocShell::DBAreaDeleted( SCTAB nTab, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW /* nY2 */ )
diff --git a/sc/source/ui/inc/filtdlg.hxx b/sc/source/ui/inc/filtdlg.hxx
index 068a48b8d689..31e0e3a5d4b1 100644
--- a/sc/source/ui/inc/filtdlg.hxx
+++ b/sc/source/ui/inc/filtdlg.hxx
@@ -164,6 +164,7 @@ private:
ListBox* aFieldLbArr[4];
ListBox* aCondLbArr[4];
ListBox* aConnLbArr[4];
+ bool mbHasDates[MAXQUERY];
BOOL bRefreshExceptQuery[MAXQUERY];
USHORT nFieldCount;
BOOL bRefInputMode;
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 149498a8314d..4d6ef782aed6 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -215,7 +215,7 @@ private:
BOOL IsAutoFilterActive( SCCOL nCol, SCROW nRow, SCTAB nTab );
void ExecFilter( ULONG nSel, SCCOL nCol, SCROW nRow,
- const String& aValue );
+ const String& aValue, bool bCheckForDates );
void FilterSelect( ULONG nSel );
void ExecDataSelect( SCCOL nCol, SCROW nRow, const String& rStr );
diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src
index 18adf9883373..2f5a2d8c88fb 100644
--- a/sc/source/ui/src/scfuncs.src
+++ b/sc/source/ui/src/scfuncs.src
@@ -1024,7 +1024,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
};
String 3 // Description of Parameter 1
{
- Text [ en-US ] = "An interger between 1583 and 9956, or 0 and 99 (19xx or 20xx depending on the option set).";
+ Text [ en-US ] = "An integer between 1583 and 9956, or 0 and 99 (19xx or 20xx depending on the option set).";
};
};
// -=*# Resource for function BW #*=-
@@ -1576,7 +1576,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
{
String 1 // Description
{
- Text [ en-US ] = "Calulates the arithmetically declining value of an asset (depreciation) for a specified period." ;
+ Text [ en-US ] = "Calculates the arithmetically declining value of an asset (depreciation) for a specified period." ;
};
ExtraData =
{
@@ -4064,7 +4064,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
{
String 1 // Description
{
- Text [ en-US ] = "Array transposition. Exchanges the rows and columns of an aray." ;
+ Text [ en-US ] = "Array transposition. Exchanges the rows and columns of an array." ;
};
ExtraData =
{
@@ -4724,7 +4724,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 3 // Description of Parameter 1
{
- Text [ en-US ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
+ Text [ en-US ] = "Value 1; value 2; ... are 1 to 30 arguments representing a sample taken from a basic total population.";
};
};
// -=*# Resource for function VARIANZEN #*=-
@@ -4820,7 +4820,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 3 // Description of Parameter 1
{
- Text [ en-US ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
+ Text [ en-US ] = "Value 1; value 2; ... are 1 to 30 arguments representing a sample taken from a basic total population.";
};
};
// -=*# Resource for function STABWN #*=-
@@ -4916,7 +4916,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 3 // Description of Parameter 1
{
- Text [ en-US ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
+ Text [ en-US ] = "Value 1; value 2; ... are 1 to 30 arguments representing a sample taken from a basic total population.";
};
};
// -=*# Resource for function SUMQUADABW #*=-
@@ -6358,7 +6358,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 7 // Description of Parameter 3
{
- Text [ en-US ] = "Mode = 1calculates the one-tailed test, 2 = two-tailed distribution." ;
+ Text [ en-US ] = "Mode = 1 calculates the one-tailed test, 2 = two-tailed distribution." ;
};
};
// -=*# Resource for function TINV #*=-
@@ -7525,7 +7525,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 9 // Description of Parameter 4
{
- Text [ en-US ] = "if the value is TRUE or not given, the search column of the array must be sorted in ascending order." ;
+ Text [ en-US ] = "If the value is TRUE or not given, the search column of the array must be sorted in ascending order." ;
};
};
// -=*# Resource for function INDEX #*=-
@@ -8397,7 +8397,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
{
String 1 // Description
{
- Text [ en-US ] = "Converts a value into text." ;
+ Text [ en-US ] = "Returns a value if it is text, otherwise an empty string." ;
};
ExtraData =
{
@@ -8413,7 +8413,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 3 // Description of Parameter 1
{
- Text [ en-US ] = "The value to be converted." ;
+ Text [ en-US ] = "The value to be checked and returned if it is text." ;
};
};
// -=*# Resource for function ERSETZEN #*=-
@@ -8709,7 +8709,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
};
String 9 // Description of Parameter 4
{
- Text [ en-US ] = "Which occurence of the old text is to be replaced." ;
+ Text [ en-US ] = "Which occurrence of the old text is to be replaced." ;
};
};
// -=*# Resource for function BASIS #*=-
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 4eddb447e8a9..d563dea095dd 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -7912,7 +7912,8 @@ void SAL_CALL ScTableSheetObj::protect( const rtl::OUString& aPassword )
{
ScUnoGuard aGuard;
ScDocShell* pDocSh = GetDocShell();
- if ( pDocSh )
+ // #i108245# if already protected, don't change anything
+ if ( pDocSh && !pDocSh->GetDocument()->IsTabProtected( GetTab_Impl() ) )
{
String aString(aPassword);
ScDocFunc aFunc(*pDocSh);
@@ -7929,9 +7930,9 @@ void SAL_CALL ScTableSheetObj::unprotect( const rtl::OUString& aPassword )
{
String aString(aPassword);
ScDocFunc aFunc(*pDocSh);
- aFunc.Unprotect( GetTab_Impl(), aString, TRUE );
-
- //! Rueckgabewert auswerten, Exception oder so
+ BOOL bDone = aFunc.Unprotect( GetTab_Impl(), aString, TRUE );
+ if (!bDone)
+ throw lang::IllegalArgumentException();
}
}
diff --git a/sc/source/ui/unoobj/dapiuno.cxx b/sc/source/ui/unoobj/dapiuno.cxx
index 7e23d6b2f9f5..c7bf89671161 100755
--- a/sc/source/ui/unoobj/dapiuno.cxx
+++ b/sc/source/ui/unoobj/dapiuno.cxx
@@ -1891,9 +1891,10 @@ void SAL_CALL ScDataPilotFieldObj::setPropertyValue( const OUString& aPropertyNa
String aNameString(aPropertyName);
if ( aNameString.EqualsAscii( SC_UNONAME_FUNCTION ) )
{
- GeneralFunction eFunction = GeneralFunction_NONE;
- if( aValue >>= eFunction )
- setFunction( eFunction );
+ // #i109350# use GetEnumFromAny because it also allows sal_Int32
+ GeneralFunction eFunction = (GeneralFunction)
+ ScUnoHelpFunctions::GetEnumFromAny( aValue );
+ setFunction( eFunction );
}
else if ( aNameString.EqualsAscii( SC_UNONAME_SUBTOTALS ) )
{
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 8e857adca09c..85c17f868b0a 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -1392,7 +1392,8 @@ void SAL_CALL ScModelObj::enableAutomaticCalculation( sal_Bool bEnabled )
void SAL_CALL ScModelObj::protect( const rtl::OUString& aPassword ) throw(uno::RuntimeException)
{
ScUnoGuard aGuard;
- if (pDocShell)
+ // #i108245# if already protected, don't change anything
+ if ( pDocShell && !pDocShell->GetDocument()->IsDocProtected() )
{
String aString(aPassword);
@@ -1410,9 +1411,9 @@ void SAL_CALL ScModelObj::unprotect( const rtl::OUString& aPassword )
String aString(aPassword);
ScDocFunc aFunc(*pDocShell);
- aFunc.Unprotect( TABLEID_DOC, aString, TRUE );
-
- //! Rueckgabewert auswerten, Exception oder so
+ BOOL bDone = aFunc.Unprotect( TABLEID_DOC, aString, TRUE );
+ if (!bDone)
+ throw lang::IllegalArgumentException();
}
}
@@ -2074,6 +2075,13 @@ sal_Int64 SAL_CALL ScModelObj::getSomething(
return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
}
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( SfxObjectShell::getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(pDocShell ));
+ }
+
// aggregated number formats supplier has XUnoTunnel, too
// interface from aggregated object must be obtained via queryAggregation
diff --git a/sc/source/ui/unoobj/servuno.cxx b/sc/source/ui/unoobj/servuno.cxx
index 0c57963a4f12..956c659f9b15 100644
--- a/sc/source/ui/unoobj/servuno.cxx
+++ b/sc/source/ui/unoobj/servuno.cxx
@@ -65,6 +65,10 @@
#include <com/sun/star/form/XFormsSupplier.hpp>
#include <svx/unomod.hxx>
+#include <comphelper/processfactory.hxx>
+#include <basic/basmgr.hxx>
+#include <sfx2/app.hxx>
+
using namespace ::com::sun::star;
class ScVbaCodeNameProvider : public ::cppu::WeakImplHelper1< document::XCodeNameQuery >
@@ -183,6 +187,7 @@ static const ProvNamesId_Type __FAR_DATA aProvNamesId[] =
{ "com.sun.star.text.textfield.DocumentTitle", SC_SERVICE_TITLEFIELD },
{ "com.sun.star.text.textfield.FileName", SC_SERVICE_FILEFIELD },
{ "com.sun.star.text.textfield.SheetName", SC_SERVICE_SHEETFIELD },
+ { "ooo.vba.VBAGlobals", SC_SERVICE_VBAGLOBALS },
};
//
@@ -236,6 +241,7 @@ static const sal_Char* __FAR_DATA aOldNames[SC_SERVICE_COUNT] =
"", // SC_SERVICE_FORMULAPARS
"", // SC_SERVICE_OPCODEMAPPER
"", // SC_SERVICE_VBACODENAMEPROVIDER
+ "", // SC_SERVICE_VBAGLOBALS
};
@@ -453,6 +459,25 @@ uno::Reference<uno::XInterface> ScServiceProvider::MakeInstance(
}
break;
}
+ case SC_SERVICE_VBAGLOBALS:
+ {
+ uno::Any aGlobs;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if ( pDoc )
+ {
+ if ( !pDocShell->GetBasicManager()->GetGlobalUNOConstant( "VBAGlobals", aGlobs ) )
+ {
+ uno::Sequence< uno::Any > aArgs(1);
+ aArgs[ 0 ] <<= pDocShell->GetModel();
+ aGlobs <<= ::comphelper::getProcessServiceFactory()->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.excel.Globals" ) ), aArgs );
+ pDocShell->GetBasicManager()->SetGlobalUNOConstant( "VBAGlobals", aGlobs );
+ BasicManager* pAppMgr = SFX_APP()->GetBasicManager();
+ if ( pAppMgr )
+ pAppMgr->SetGlobalUNOConstant( "ThisExcelDoc", aArgs[ 0 ] );
+ }
+ aGlobs >>= xRet;
+ }
+ }
}
return xRet;
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index b8eeb868809e..87740a88e4df 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -165,6 +165,7 @@ private:
BOOL bInit;
BOOL bCancelled;
BOOL bInSelect;
+ bool mbListHasDates;
ULONG nSel;
ScFilterBoxMode eMode;
@@ -188,6 +189,8 @@ public:
BOOL IsInInit() const { return bInit; }
void SetCancelled() { bCancelled = TRUE; }
BOOL IsInSelect() const { return bInSelect; }
+ void SetListHasDates(bool b) { mbListHasDates = b; }
+ bool HasDates() const { return mbListHasDates; }
};
//-------------------------------------------------------------------
@@ -203,6 +206,7 @@ ScFilterListBox::ScFilterListBox( Window* pParent, ScGridWindow* pGrid,
bInit( TRUE ),
bCancelled( FALSE ),
bInSelect( FALSE ),
+ mbListHasDates(false),
nSel( 0 ),
eMode( eNewMode )
{
@@ -907,7 +911,9 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect )
pFilterBox->SetSeparatorPos( nDefCount - 1 );
// get list entries
- pDoc->GetFilterEntries( nCol, nRow, nTab, aStrings, true );
+ bool bHasDates = false;
+ pDoc->GetFilterEntries( nCol, nRow, nTab, true, aStrings, bHasDates);
+ pFilterBox->SetListHasDates(bHasDates);
// check widths of numerical entries (string entries are not included)
// so all numbers are completely visible
@@ -1117,7 +1123,7 @@ void ScGridWindow::FilterSelect( ULONG nSel )
ExecDataSelect( nCol, nRow, aString );
break;
case SC_FILTERBOX_FILTER:
- ExecFilter( nSel, nCol, nRow, aString );
+ ExecFilter( nSel, nCol, nRow, aString, pFilterBox->HasDates() );
break;
case SC_FILTERBOX_SCENARIO:
pViewData->GetView()->UseScenario( aString );
@@ -1150,7 +1156,7 @@ void ScGridWindow::ExecDataSelect( SCCOL nCol, SCROW nRow, const String& rStr )
void ScGridWindow::ExecFilter( ULONG nSel,
SCCOL nCol, SCROW nRow,
- const String& aValue )
+ const String& aValue, bool bCheckForDates )
{
SCTAB nTab = pViewData->GetTabNo();
ScDocument* pDoc = pViewData->GetDocument();
@@ -1222,6 +1228,7 @@ void ScGridWindow::ExecFilter( ULONG nSel,
rNewEntry.bDoQuery = TRUE;
rNewEntry.bQueryByString = TRUE;
rNewEntry.nField = nCol;
+ rNewEntry.bQueryByDate = bCheckForDates;
if ( nSel == SC_AUTOFILTER_TOP10 )
{
rNewEntry.eOp = SC_TOPVAL;
diff --git a/sc/util/makefile.mk b/sc/util/makefile.mk
index 275b3d22548a..b7b12e07ee6a 100644
--- a/sc/util/makefile.mk
+++ b/sc/util/makefile.mk
@@ -71,7 +71,6 @@ SHL1IMPLIB= sci
# dynamic libraries
SHL1STDLIBS= \
- $(VBAHELPERLIB) \
$(BASICLIB) \
$(SFXLIB) \
$(SVTOOLLIB) \
diff --git a/scp2/source/crashrep/file_crashrep.scp b/scp2/source/crashrep/file_crashrep.scp
index f92f93f0b1d8..53ec1ac245eb 100644
--- a/scp2/source/crashrep/file_crashrep.scp
+++ b/scp2/source/crashrep/file_crashrep.scp
@@ -31,11 +31,7 @@
File gid_Brand_File_Bin_Crashreport
BIN_FILE_BODY;
- #ifdef UNX
- Name = "crash_report.bin";
- #else
- Name = "crashrep.exe";
- #endif
+ Name = EXENAME(crashrep);
Dir = gid_Brand_Dir_Program;
#ifdef WNT
FileDescription = "%PRODUCTNAME Crashreporter";
@@ -66,15 +62,3 @@ File gid_Brand_File_Lib_Dbghelp
End
#endif
-
-#ifdef UNX
-
-File gid_Brand_File_Bin_Crashreport_Script
- BIN_FILE_BODY;
- Name = "crash_report";
- Dir = gid_Brand_Dir_Program;
- Styles = (PACKED);
-End
-
-#endif
-
diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp
index f2f305181786..b2023aabecd7 100644
--- a/scp2/source/ooo/common_brand.scp
+++ b/scp2/source/ooo/common_brand.scp
@@ -119,19 +119,22 @@ Module gid_Module_Langpack_Brand_Template
gid_Brand_Dir_Share_Readme);
Files = (gid_Brand_File_Res_Iso,
gid_Brand_File_Res_Ooo,
- gid_Brand_File_Entitlement,
gid_Brand_File_Help_C05_Sdatabase_Zip,
gid_Brand_File_Help_C05_Scalc_Zip,
gid_Brand_File_Help_C05_Sdraw_Zip,
gid_Brand_File_Help_C05_Swriter_Zip,
gid_Brand_File_License_License,
+ gid_Brand_File_License_License_Small,
gid_Brand_File_License_License_Html,
+ gid_Brand_File_License_License_Html_Small,
gid_Brand_File_Readme_Readme,
gid_Brand_File_Readme_Readme_Html,
gid_Brand_File_Share_Registry_Cjk_Xcd,
gid_Brand_File_Share_Registry_Korea_Xcd,
gid_Brand_File_Txt_License,
+ gid_Brand_File_Txt_License_Small,
gid_Brand_File_Txt_License_Html,
+ gid_Brand_File_Txt_License_Html_Small,
gid_Brand_File_Txt_Readme,
gid_Brand_File_Txt_Readme_Html);
End
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
index 400baaa5ef04..3ebe0396dabb 100644
--- a/scp2/source/ooo/file_library_ooo.scp
+++ b/scp2/source/ooo/file_library_ooo.scp
@@ -100,10 +100,10 @@ File gid_File_Lib_Ldapbe2
End
#endif
-STD_UNO_LIB_FILE(gid_File_Lib_Chartcontroller, chartcontroller)
-STD_UNO_LIB_FILE(gid_File_Lib_Chartmodel, chartmodel)
-STD_UNO_LIB_FILE(gid_File_Lib_Charttools, charttools)
-STD_UNO_LIB_FILE(gid_File_Lib_Chartview, chartview)
+STD_UNO_LIB_FILE_PATCH(gid_File_Lib_Chartcontroller, chartcontroller)
+STD_UNO_LIB_FILE_PATCH(gid_File_Lib_Chartmodel, chartmodel)
+STD_UNO_LIB_FILE_PATCH(gid_File_Lib_Charttools, charttools)
+STD_UNO_LIB_FILE_PATCH(gid_File_Lib_Chartview, chartview)
#if defined WNT && defined _MSC
@@ -228,7 +228,7 @@ End
File gid_File_Lib_QStart_Gtk
Name = LIBNAME(qstart_gtk);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
#endif
@@ -505,7 +505,7 @@ SPECIAL_UNO_LIB_FILE(gid_File_Lib_Fileacc,fileacc)
File gid_File_Lib_Filterconfig1
TXT_FILE_BODY;
- Styles = (PACKED,UNO_COMPONENT);
+ Styles = (PACKED,UNO_COMPONENT,PATCH);
Dir = SCP2_OOO_BIN_DIR;
RegistryID = gid_Starregistry_Services_Rdb;
Name = SPECIAL_NAME(filterconfig1);
@@ -653,7 +653,7 @@ STD_LIB_FILE( gid_File_Lib_Fwi , fwi)
File gid_File_Lib_Fwk
Name = LIBNAME(fwk);
TXT_FILE_BODY;
- Styles = (PACKED,PATCH,UNO_COMPONENT);
+ Styles = (PACKED,UNO_COMPONENT,PATCH);
Dir = SCP2_OOO_BIN_DIR;
RegistryID = gid_Starregistry_Services_Rdb;
End
@@ -1126,13 +1126,13 @@ SPECIAL_UNO_COMPONENT_LIB_FILE( gid_File_Lib_Productregistration, productregistr
File gid_File_Lib_Desktop_Detector
Name = LIBNAME(desktop_detector);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
File gid_File_Lib_Vclplug_Gen
Name = LIBNAME(vclplug_gen);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
#endif
@@ -1142,7 +1142,7 @@ End
File gid_File_Lib_Vclplug_Gtk
Name = LIBNAME(vclplug_gtk);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
#endif
@@ -1151,7 +1151,7 @@ End
File gid_File_Lib_Vclplug_Kde
Name = LIBNAME(vclplug_kde);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
#endif
@@ -1161,7 +1161,7 @@ End
File gid_File_Lib_Vclplug_Kde4
Name = LIBNAME(vclplug_kde4);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = gid_Dir_Program;
End
#endif
@@ -1172,7 +1172,7 @@ End
File gid_File_Lib_AppleRemote
Name = LIBNAME(AppleRemote);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
#endif
@@ -1181,13 +1181,13 @@ End
File gid_File_Lib_Basebmp
Name = LIBNAME(basebmp);
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
End
#endif
#if defined UNX && ! defined QUARTZ
-STD_LIB_FILE( gid_File_Lib_Vclplug_Svp, vclplug_svp )
+STD_LIB_FILE_PATCH( gid_File_Lib_Vclplug_Svp, vclplug_svp )
STD_LIB_FILE( gid_File_Lib_BaseBmp, basebmp )
#endif
@@ -1195,7 +1195,7 @@ STD_LIB_FILE( gid_File_Lib_BaseBmp, basebmp )
File gid_File_Lib_Recentfile
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = SCP2_OOO_BIN_DIR;
Name = STRING(CONCAT2(librecentfile,UNXSUFFIX));
End
@@ -1238,7 +1238,7 @@ End
File gid_File_Lib_Res
Name = LIBNAME(res);
TXT_FILE_BODY;
- Styles = (PACKED,UNO_COMPONENT);
+ Styles = (PACKED,UNO_COMPONENT,PATCH);
Dir = SCP2_OOO_BIN_DIR;
RegistryID = gid_Starregistry_Services_Rdb;
End
@@ -1512,7 +1512,7 @@ STD_LIB_FILE( gid_File_Lib_BaseGfx, basegfx )
File gid_File_Lib_Vcl
Name = LIBNAME(vcl);
TXT_FILE_BODY;
- Styles = (PACKED,UNO_COMPONENT);
+ Styles = (PACKED,UNO_COMPONENT,PATCH);
Dir = SCP2_OOO_BIN_DIR;
RegistryID = gid_Starregistry_Services_Rdb;
End
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index 19a15f7fcc11..d72fda64f6f2 100755
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -1732,15 +1732,6 @@ File gid_File_App_InfoPlist
End
#endif
-#if defined MACOSX && !defined QUARTZ
-File gid_File_App_Bundle
- ARCHIVE_TXT_FILE_BODY;
- Dir = gid_Dir_Bundle_Contents;
- Name = "osxbundle.zip";
- Styles = (ARCHIVE,USE_INTERNAL_RIGHTS);
-End
-#endif
-
#ifdef MACOSX
File gid_File_Icns_Bundle
ARCHIVE_TXT_FILE_BODY;
@@ -1777,15 +1768,6 @@ File gid_File_Spotlight_Bundle
End
#endif
-#if defined MACOSX && !defined QUARTZ
-File gid_File_Bin_Fondu
- BIN_FILE_BODY;
- Dir = gid_Dir_Program;
- Name = "fondu";
- Styles = (PACKED);
-End
-#endif
-
File gid_File_Config_Javasettingsunopkginstall
USER_FILE_BODY;
Dir = gid_Dir_Config;
@@ -1911,7 +1893,7 @@ End
File gid_File_Extension_Dictionary_Da
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-da.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -1920,7 +1902,7 @@ End
File gid_File_Extension_Dictionary_De_AT
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-de-AT.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -1929,7 +1911,7 @@ End
File gid_File_Extension_Dictionary_De_CH
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-de-CH.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -1938,7 +1920,7 @@ End
File gid_File_Extension_Dictionary_De_DE
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-de-DE.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -1947,7 +1929,7 @@ End
File gid_File_Extension_Dictionary_En
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-en.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -1965,7 +1947,7 @@ End
File gid_File_Extension_Dictionary_Et
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-et.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -1974,7 +1956,7 @@ End
File gid_File_Extension_Dictionary_Fr
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-fr.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2001,7 +1983,7 @@ End
File gid_File_Extension_Dictionary_Hu
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-hu.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2010,7 +1992,16 @@ End
File gid_File_Extension_Dictionary_It
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-it.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
+ UnixRights = 444;
+End
+#endif
+
+#ifndef WITHOUT_MYSPELL_DICTS
+File gid_File_Extension_Dictionary_Ku_Tr
+ Dir = gid_Brand_Dir_Share_Extension_Install;
+ Name = "dict-ku-TR.oxt";
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2046,7 +2037,7 @@ End
File gid_File_Extension_Dictionary_No
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-no.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2055,7 +2046,7 @@ End
File gid_File_Extension_Dictionary_Pl
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-pl.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2064,7 +2055,7 @@ End
File gid_File_Extension_Dictionary_Pt
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-pt.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2073,7 +2064,7 @@ End
File gid_File_Extension_Dictionary_Ro
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-ro.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2091,7 +2082,7 @@ End
File gid_File_Extension_Dictionary_Sk
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-sk.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
@@ -2118,7 +2109,7 @@ End
File gid_File_Extension_Dictionary_Sv
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-sv.oxt";
- Styles = (PACKED, FORCELANGUAGEPACK);
+ Styles = (PACKED, PATCH, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index bd0182f95c49..a91114de03d7 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -968,6 +968,17 @@ Module gid_Module_Root_Extension_Dictionary_It
Styles = (HIDDEN_ROOT);
End
+Module gid_Module_Root_Extension_Dictionary_Ku_Tr
+ Name = "gid_Module_Root_Extension_Dictionary_Ku_Tr";
+ Description = "gid_Module_Root_Extension_Dictionary_Ku_Tr";
+ Files = (gid_File_Extension_Dictionary_Ku_Tr);
+ InstallOrder = "2000";
+ Spellcheckerlanguage = "ku-TR";
+ PackageInfo = "packinfo_office.txt";
+ ParentID = gid_Module_Root;
+ Styles = (HIDDEN_ROOT);
+End
+
Module gid_Module_Root_Extension_Dictionary_Lt
Name = "gid_Module_Root_Extension_Dictionary_Lt";
Description = "gid_Module_Root_Extension_Dictionary_Lt";
diff --git a/scp2/source/xsltfilter/file_xsltfilter.scp b/scp2/source/xsltfilter/file_xsltfilter.scp
index 848b1c707ff7..e044a3dee90d 100644
--- a/scp2/source/xsltfilter/file_xsltfilter.scp
+++ b/scp2/source/xsltfilter/file_xsltfilter.scp
@@ -57,7 +57,7 @@ End
File gid_File_Xsl_Export_Xhtml_Body
TXT_FILE_BODY;
- Styles = (PACKED);
+ Styles = (PACKED,PATCH);
Dir = gid_Dir_Share_Xslt_Export_Xhtml;
Name = "/xslt/export/xhtml/body.xsl";
End
diff --git a/scripting/prj/build.lst b/scripting/prj/build.lst
index fc332384e047..7d5162173eae 100644..100755
--- a/scripting/prj/build.lst
+++ b/scripting/prj/build.lst
@@ -1,4 +1,4 @@
-tc scripting : oovbaapi bridges rdbmaker vcl xmlscript basic sfx2 rhino BSH:beanshell javaunohelper NULL
+tc scripting : oovbaapi vbahelper bridges rdbmaker vcl xmlscript basic sfx2 rhino BSH:beanshell javaunohelper NULL
tc scripting usr1 - all tc1_mkout NULL
tc scripting\inc nmake - all tc1_inc NULL
tc scripting\source\provider nmake - all tc1_scriptingprovider tc1_inc NULL
diff --git a/scripting/source/dlgprov/dlgevtatt.cxx b/scripting/source/dlgprov/dlgevtatt.cxx
index fedbce79b218..6c3694ea237d 100644
--- a/scripting/source/dlgprov/dlgevtatt.cxx
+++ b/scripting/source/dlgprov/dlgevtatt.cxx
@@ -50,9 +50,9 @@
#include <com/sun/star/beans/MethodConcept.hpp>
#include <com/sun/star/beans/XMaterialHolder.hpp>
-#ifdef FAKE_VBA_EVENT_SUPPORT
#include <ooo/vba/XVBAToOOEventDescGen.hpp>
-#endif
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <vbahelper/vbaaccesshelper.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::awt;
@@ -104,7 +104,6 @@ namespace dlgprov
};
-#ifdef FAKE_VBA_EVENT_SUPPORT
class DialogVBAScriptListenerImpl : public DialogScriptListenerImpl
{
protected:
@@ -157,7 +156,6 @@ namespace dlgprov
}
}
}
-#endif
//.........................................................................
@@ -166,7 +164,7 @@ namespace dlgprov
// =============================================================================
DialogEventsAttacherImpl::DialogEventsAttacherImpl( const Reference< XComponentContext >& rxContext, const Reference< frame::XModel >& rxModel, const Reference< awt::XControl >& rxControl, const Reference< XInterface >& rxHandler, const Reference< beans::XIntrospectionAccess >& rxIntrospect, bool bProviderMode, const Reference< script::XScriptListener >& rxRTLListener )
- :m_xContext( rxContext )
+ :mbUseFakeVBAEvents( false ), m_xContext( rxContext )
{
// key listeners by protocol when ScriptType = 'Script'
// otherwise key is the ScriptType e.g. StarBasic
@@ -177,9 +175,22 @@ namespace dlgprov
// handler for Script & ::rtl::OUString::createFromAscii( "vnd.sun.star.UNO:" )
listernersForTypes[ rtl::OUString::createFromAscii("vnd.sun.star.UNO") ] = new DialogUnoScriptListenerImpl( rxContext, rxModel, rxControl, rxHandler, rxIntrospect, bProviderMode );
listernersForTypes[ rtl::OUString::createFromAscii("vnd.sun.star.script") ] = new DialogSFScriptListenerImpl( rxContext, rxModel );
-#ifdef FAKE_VBA_EVENT_SUPPORT
- listernersForTypes[ rtl::OUString::createFromAscii("VBAInterop") ] = new DialogVBAScriptListenerImpl( rxContext, rxControl, rxModel );
-#endif
+ // Note: in a future cws ( npower13_ObjectModule ) it will be possible
+ // to determine the vba mode from the basiclibrary container, the tunnel hack
+ // below can then be replaced
+ SfxObjectShell* pFoundShell = NULL;
+ if ( rxModel.is() )
+ {
+ uno::Reference< lang::XUnoTunnel > xObjShellTunnel( rxModel, uno::UNO_QUERY );
+ if ( xObjShellTunnel.is() )
+ {
+ pFoundShell = reinterpret_cast<SfxObjectShell*>( xObjShellTunnel->getSomething(SfxObjectShell::getUnoTunnelId()));
+ if ( pFoundShell )
+ mbUseFakeVBAEvents = ooo::vba::isAlienExcelDoc( *pFoundShell );
+ }
+ }
+ if ( mbUseFakeVBAEvents )
+ listernersForTypes[ rtl::OUString::createFromAscii("VBAInterop") ] = new DialogVBAScriptListenerImpl( rxContext, rxControl, rxModel );
}
// -----------------------------------------------------------------------------
@@ -197,7 +208,6 @@ namespace dlgprov
throw RuntimeException(); // more text info here please
return it->second;
}
-#ifdef FAKE_VBA_EVENT_SUPPORT
Reference< XScriptEventsSupplier > DialogEventsAttacherImpl::getFakeVbaEventsSupplier( const Reference< XControl >& xControl, rtl::OUString& sControlName )
{
Reference< XScriptEventsSupplier > xEventsSupplier;
@@ -210,7 +220,6 @@ namespace dlgprov
}
return xEventsSupplier;
}
-#endif
// -----------------------------------------------------------------------------
void SAL_CALL DialogEventsAttacherImpl::attachEventsToControl( const Reference< XControl>& xControl, const Reference< XScriptEventsSupplier >& xEventsSupplier, const Any& Helper )
@@ -312,7 +321,6 @@ namespace dlgprov
// go over all objects
const Reference< XInterface >* pObjects = Objects.getConstArray();
sal_Int32 nObjCount = Objects.getLength();
-#ifdef FAKE_VBA_EVENT_SUPPORT
Reference< awt::XControl > xDlgControl( Objects[ nObjCount - 1 ], uno::UNO_QUERY ); // last object is the dialog
rtl::OUString sDialogCodeName;
if ( xDlgControl.is() )
@@ -324,7 +332,6 @@ namespace dlgprov
}
catch( Exception& ){}
}
-#endif
for ( sal_Int32 i = 0; i < nObjCount; ++i )
{
@@ -339,10 +346,11 @@ namespace dlgprov
Reference< XControlModel > xControlModel = xControl->getModel();
Reference< XScriptEventsSupplier > xEventsSupplier( xControlModel, UNO_QUERY );
attachEventsToControl( xControl, xEventsSupplier, Helper );
-#ifdef FAKE_VBA_EVENT_SUPPORT
- xEventsSupplier.set( getFakeVbaEventsSupplier( xControl, sDialogCodeName ) );
- attachEventsToControl( xControl, xEventsSupplier, Helper );
-#endif
+ if ( mbUseFakeVBAEvents )
+ {
+ xEventsSupplier.set( getFakeVbaEventsSupplier( xControl, sDialogCodeName ) );
+ attachEventsToControl( xControl, xEventsSupplier, Helper );
+ }
}
}
diff --git a/scripting/source/dlgprov/dlgevtatt.hxx b/scripting/source/dlgprov/dlgevtatt.hxx
index 4b9028718a55..85b0bfcd087d 100644
--- a/scripting/source/dlgprov/dlgevtatt.hxx
+++ b/scripting/source/dlgprov/dlgevtatt.hxx
@@ -44,8 +44,6 @@
#include <hash_map>
-#define FAKE_VBA_EVENT_SUPPORT 1
-
//.........................................................................
namespace dlgprov
{
@@ -66,13 +64,12 @@ namespace dlgprov
class DialogEventsAttacherImpl : public DialogEventsAttacherImpl_BASE
{
private:
+ bool mbUseFakeVBAEvents;
ListenerHash listernersForTypes;
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
::com::sun::star::uno::Reference< ::com::sun::star::script::XEventAttacher > m_xEventAttacher;
::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptListener > getScriptListenerForKey( const rtl::OUString& sScriptName ) throw ( ::com::sun::star::uno::RuntimeException );
-#ifdef FAKE_VBA_EVENT_SUPPORT
::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptEventsSupplier > getFakeVbaEventsSupplier( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl, rtl::OUString& sCodeName );
-#endif
void SAL_CALL attachEventsToControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl, const ::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptEventsSupplier >& events, const ::com::sun::star::uno::Any& Helper );
public:
DialogEventsAttacherImpl( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext,
diff --git a/scripting/source/dlgprov/makefile.mk b/scripting/source/dlgprov/makefile.mk
index 455423412784..6c8ec298c760 100644
--- a/scripting/source/dlgprov/makefile.mk
+++ b/scripting/source/dlgprov/makefile.mk
@@ -59,6 +59,7 @@ SHL1STDLIBS= \
$(COMPHELPERLIB) \
$(UCBHELPERLIB) \
$(CPPULIB) \
+ $(BASICLIB) \
$(SALLIB)
SHL1DEPN=
diff --git a/scripting/source/vbaevents/eventhelper.cxx b/scripting/source/vbaevents/eventhelper.cxx
index 7e4626e31c00..838d89d49c89 100755..100644
--- a/scripting/source/vbaevents/eventhelper.cxx
+++ b/scripting/source/vbaevents/eventhelper.cxx
@@ -349,8 +349,8 @@ static TranslatePropMap aTranslatePropMap_Impl[] =
{ MAP_CHAR_LEN("mouseDragged"), { MAP_CHAR_LEN("_MouseMove"), ooMouseEvtToVBAMouseEvt, DenyMouseDrag, NULL } }, //liuchen, add to support VBA MouseMove event when the "Shift" key is pressed
// keyPressed ooo event
- { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyDown"), ooKeyPressedToVBAKeyUpDown, ApproveAll, NULL } },
- { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyPress"), ooKeyPressedToVBAKeyUpDown, ApproveAll, NULL } }
+ { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyDown"), ooKeyPressedToVBAKeyPressed, ApproveAll, NULL } },
+ { MAP_CHAR_LEN("keyPressed"), { MAP_CHAR_LEN("_KeyPress"), ooKeyPressedToVBAKeyPressed, ApproveAll, NULL } }
};
EventInfoHash& getEventTransInfo()
@@ -929,9 +929,12 @@ EventListener::firing_Impl(const ScriptEvent& evt, Any* /*pRet*/ ) throw(Runtime
Sequence< Any > aOutArgs;
try
{
- uno::Reference< script::provider::XScript > xScript = xScriptProvider->getScript( url );
- if ( xScript.is() )
- xScript->invoke( aArguments, aOutArgsIndex, aOutArgs );
+ if ( mpShell )
+ {
+ uno::Any aRet;
+ mpShell->CallXScript( url,
+ aArguments, aRet, aOutArgsIndex, aOutArgs, false );
+ }
}
catch ( uno::Exception& e )
{
diff --git a/sd/inc/segdefs_.hxx b/sd/inc/segdefs_.hxx
deleted file mode 100644
index a93071b463b6..000000000000
--- a/sd/inc/segdefs_.hxx
+++ /dev/null
@@ -1,1400 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#define app_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app_04 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app_05 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app_0a SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app2_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app2_03 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app2_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app4_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define splcfg_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define splcfg_04 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define app5_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define optsitem_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define optsitem_02 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define optsitem_03 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define optsitem_04 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define optsitem_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define optsitem_07 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
-#define drawdoc2_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviewsa_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawdoc_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawdoc2_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdpage_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawdoc_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define stlsheet_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawview_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdview_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawview_09 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews5_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdview_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawview_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews5_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewshel_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_0b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fusel_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewshel_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews4_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_09 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews4_0b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_09 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fusel_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews4_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviewsa_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewshel_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fupoor_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshel2_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews1_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews5_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews1_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fupoor_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fusel_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fupoor_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fupoor_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews7_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewshel_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews6_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tbxitem_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tbxitem_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshell_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drawdoc2_0c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshell_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshel4_1d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define stlsheet_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_20 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshell_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshell_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewshe2_16 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_0c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fudraw_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define fupoor_12 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define docshel4_0b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews1_0b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews7_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews7_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdview_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define tbxitem_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define drviews3_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdpage_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define viewshe2_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_14 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_1b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_1c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_17 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_18 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_1a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_15 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
-#define sdwindow_0d SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define sdwindow_04 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define sdpage2_08 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
-#define sdruler_06 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshe2_09 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_0e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_0f SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define outlview_0f SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define outlview_09 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define fuoltext_06 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define outlnvsh_1c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define outlnvsh_11 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define outlview_0a SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_21 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define outlnvsh_15 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshe2_07 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_11 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_10 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_12 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshe2_08 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews1_06 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews4_02 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews5_05 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshel_10 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshel_12 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdwindow_13 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews1_10 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshel_13 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define viewshel_0f SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdpage_1f SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews1_1c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews5_06 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews5_04 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews1_13 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdruler_03 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define sdruler_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviews1_14 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define app3_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docshel4_1c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drviewsh_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docshell_02 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define docshel4_0e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
-#define drawdoc2_07 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc2_09 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc2_0e SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage2_05 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage2_07 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc_04 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define outlview_0c SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_0e SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_0d SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc2_13 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_19 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_04 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_05 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc_13 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdoutl_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc_12 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define outlnvsh_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdview_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drawdoc2_05 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define drtxtob_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_1d SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_1b SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_12 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define sdpage_13 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define stlpool_03 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define stlsheet_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
-#define app3_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define fusel_01 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define fusel_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define drviewsa_05 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define drawdoc2_0d SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_14 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_0b SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define frmview_04 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define sdview_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define sdview_06 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define drawview_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlnvsh_05 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define fuoltext_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define fuoutl_02 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define fuoltext_08 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_12 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_18 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_01 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlview_13 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define outlnvsh_14 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
-#define drtxtob_04 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define outlview_16 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define tbxww_08 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
-#define viewshe2_0b SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define sdpage_1a SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define sdpage_0a SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define sdview_03 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define outlnvsh_0d SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define sdview_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
-#define outlnvsh_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define drviews1_16 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define sdwindow_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define drviews1_15 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define drviews1_12 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define outlnvsh_1e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define drawdoc2_12 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define drawdoc_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define stlpool_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
-#define optsitem_14 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define optsitem_16 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define optsitem_17 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define drviews1_1d SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
-#define stlsheet_05 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define drawdoc4_01 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define stlpool_07 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define drawdoc_10 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
-#define outlnvsh_06 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define outlview_03 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define viewshel_01 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define viewshel_02 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define sdwindow_01 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
-#define frmview_01 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define frmview_07 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define drviewsa_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define frmview_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define outlnvsh_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define outlnvsh_10 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define fuoutl_01 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define drviewsa_07 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define fuoltext_01 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define fuoltext_07 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
-#define drawitem_03 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_06 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define docshell_0b SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define docshell_01 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_02 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_08 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_0c SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_09 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_0e SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_12 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_0f SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_14 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_18 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_15 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_1a SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_1e SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_1b SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_20 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_24 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drawitem_21 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
-#define drviews1_11 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define drbezob_01 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define tabcontr_01 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define drawview_01 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define drstdob_01 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define layertab_01 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define sdruler_02 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define sdruler_08 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define docshel2_03 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define docshel2_02 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
-#define tbxww_04 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define viewshe2_1d SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define viewshel_04 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define docshel2_05 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define sdwindow_02 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define drtxtob_02 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define drstdob_02 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define drbezob_02 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define sdruler_04 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
-#define tabcontr_02 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define layertab_02 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define drviews1_0a SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define outlnvsh_1a SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define app4_02 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define docdlg_01 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define tabcontr_04 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define viewshe2_10 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define outlnvsh_08 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
-#define outlnvsh_09 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define outlnvsh_0a SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define outlnvsh_18 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define outlnvsh_19 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
-#define tabcontr_08 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
-#define drawdoc2_16 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define drviews2_02 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define drawview_05 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define fucopy_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define drawview_03 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define sdview_08 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define drviews1_03 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define sdpage2_06 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define sdview_09 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define fudraw_06 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define sdview2_07 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define drviewsc_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define fuoltext_04 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define outlview_19 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define sdview_0e SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define futext_04 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define fupoor_05 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define fuconstr_04 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define sdpage2_04 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
-#define viewshel_0b SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define drviews4_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define sdwindow_0a SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define fusel_05 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define fudraw_05 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define fupoor_0f SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define drawdoc3_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define fusel_03 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define viewshel_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define drviews4_07 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define fudraw_03 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define sdwindow_08 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define viewshe2_1b SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define sdwindow_0b SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define drviews4_0a SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define viewshel_0c SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
-#define viewshel_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drviews8_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define drviewsb_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define outlnvsh_0f SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuarea_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconpol_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define sdview_10 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconrec_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconstr_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_0a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_0b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_0c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define sdview_13 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconstr_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconpol_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define app6_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_0f SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconrec_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_0d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_03 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define sdview_14 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_0e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_10 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconbez_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconstr_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconpol_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconpol_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconstr_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconrec_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define futext_09 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconstr_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fuconpol_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
-#define fudraw_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define fupoor_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define futext_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define sdwindow_1d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define sdwindow_1f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define drviews1_08 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define sdview2_05 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define fuoutl_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define sdwindow_1e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewshe2_13 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_08 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_0e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define drawdoc2_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlnvsh_0e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewshe2_1c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define sdwindow_22 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define drviews1_09 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define sdview2_06 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_1a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define fuoltext_09 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define fuoltext_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define viewshe2_12 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define outlview_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define drawdoc2_0f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define fubullet_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
-#define drviews4_05 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define showwin_03 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define fuslshow_0c SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define fupoor_08 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
-#define fusel_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdpage_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdpage2_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define docshel4_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc3_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc3_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define docshell_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define stlsheet_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define stlpool_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define stlpool_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define dragserv_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc3_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdoutl_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define stlpool_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define fuprlout_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdpage_18 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdpage2_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawview_07 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define docshel4_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdiocmpt_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define frmview_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define stlsheet_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdpage2_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define docshel4_1e SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define frmview_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc2_11 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define drawdoc2_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define docshel4_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define docshel4_0d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define stlsheet_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define viewshe2_1f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define app6_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdobjpal_12 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdobjpal_11 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdobjpal_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdobjpal_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdobjpal_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define app6_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdobjpal_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
-#define sdview_0c SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_17 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_0c SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_01 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_0d SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define app6_07 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define app6_0b SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define drviews6_03 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_10 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define drviews6_04 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_0e SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define app6_08 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define sdobjpal_0f SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
-#define fuconstr_03 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define fuconrec_03 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define fuconbez_03 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define fuconarc_03 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
-#define futext_12 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define frmview_02 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define fuconrec_04 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define viewshe2_0a SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define drviews3_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
-#define drawdoc2_10 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define fuoltext_03 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define fuoltext_05 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define fuconrec_01 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define fuconrec_02 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
-#define sdview_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define drtxtob_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define outlview_15 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define fuchar_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define dlgchar_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define dlgchar_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define fuolbull_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_04 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define dlgolbul_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_05 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_06 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_09 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_0a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define enumdlg_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
-#define sdpage_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define app1_03 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define newfoil_01 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define newfoil_03 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define newfoil_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define newfoil_05 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
-#define newfoil_02 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define newfoil_04 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define newfoil_06 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define futext_07 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define app_02 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
-#define sdobjpal_03 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define sdobjpal_13 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define tabcontr_03 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define fuconpol_04 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define app2_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define app1_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define app6_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
-#define app2_07 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define outlnvsh_1d SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define drviews1_07 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define fuconbez_04 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define fupoor_0e SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
-#define app_08 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define sdobjpal_19 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define tbxww_01 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define tbxww_06 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define tbxww_07 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
-#define tbxww_05 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fupoor_10 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define unchss_01 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define drviews6_09 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_03 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_06 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_0e SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_11 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_13 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_07 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_07 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define showview_01 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define showwin_07 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_11 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_0d SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_1b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_08 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_15 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_16 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_1a SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define showwin_05 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_08 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_0b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define showview_03 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define showview_06 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define showview_04 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_01 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_0b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_02 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_14 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_0a SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_01 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshow_12 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_0c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_08 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_0b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_0c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_10 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_12 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_0e SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw3_09 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_02 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_21 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_22 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fuslshw2_0f SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define fader_0f SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
-#define tbxww_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define drviews1_19 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define fupage_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define viewshe2_20 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define drawdoc2_06 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define dlgpage_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define sdundogr_05 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
-#define fuconbez_07 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define fuconstr_06 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define fuconrec_06 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define fuconbez_06 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define fudraw_0c SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define fuslshow_01 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define drawdoc_08 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define drawdoc_09 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define drawdoc_0a SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define drawdoc_0b SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define drawdoc_0c SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define present_01 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define present_03 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define present_04 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define present_02 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
-#define fuslshow_02 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define fader_02 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define mover_02 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define showview_02 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
-#define fuslshow_0e SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define fuslshow_0f SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define docshel4_11 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define docshel4_16 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define app6_03 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define sdobjpal_21 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define app6_04 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
-#define fuedibez_03 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define fuedibez_0a SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define fuedibez_04 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define fuedibez_05 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
-#define fuconbez_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define fuconbez_08 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define fader_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define fupoor_09 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define sdview2_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define mover_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define showwin_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define showwin_02 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
-#define dragserv_02 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define dragserv_04 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define dragserv_05 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define dragserv_06 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define dragserv_08 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
-#define stlpool_09 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define stlpool_0a SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
-#define drviews6_08 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define fuslshow_09 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
-#define fuedibez_07 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define fuconbez_02 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define fupoor_0b SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define sdview2_03 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
-#define showwin_04 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define showwin_06 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define fuinsert_01 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define graphpro_01 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define graphpro_02 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define graphpro_03 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
-#define fuinsert_02 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define fuprlout_02 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define fucopy_02 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define fucopy_04 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define fuline_01 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
-#define unprlout_01 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define unmovss_01 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define stlsheet_08 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define copydlg_01 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define copydlg_03 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
-#define copydlg_02 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define copydlg_04 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
-#define docshell_0c SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define docshel3_01 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define fusearch_01 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define sdoutl_03 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define app2_04 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define sdoutl_04 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define fusearch_02 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define fuspell_01 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define fuspell_02 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define fusearch_03 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define sdoutl_07 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define fuspell_03 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define sdoutl_05 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
-#define viewshe2_04 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define viewshe2_05 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define sdwindow_16 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define outlnvsh_13 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
-#define viewshe2_0e SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define fuzoom_04 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define fuzoom_05 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define outlnvsh_16 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
-#define fuzoom_01 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define fuzoom_02 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define fuzoom_03 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define fuzoom_07 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define fuzoom_08 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define fuolbull_02 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define fuolbull_04 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define newfoil_08 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define app6_09 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define app6_01 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
-#define docdlg_04 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define docdlg_05 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define drviews1_0d SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define fuconarc_01 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
-#define fuconarc_02 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuconarc_04 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuconarc_05 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuconarc_07 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuconarc_08 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuedibez_01 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuedibez_02 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
-#define fuedibez_08 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fupoor_0c SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_01 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_02 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_03 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_04 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_05 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_07 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define fudspord_08 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define futempl_01 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define drawview_08 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define sdview_12 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define tabtempl_01 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define tabtempl_02 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define tabtempl_03 SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
-#define slidvish_01 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidvish_03 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidvish_0c SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define fuslid_01 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidvish_18 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_05 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_12 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_06 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_0a SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_11 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_01 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_09 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_04 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidview_0b SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define slidvish_1c SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define fuslsel_01 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define fuslsel_08 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define fuslid_06 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
-#define drviews4_06 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define sdruler_05 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define viewshe2_1e SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define fuslshow_13 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define fuinsfil_01 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define fuinsfil_07 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define fuinsfil_09 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
-#define fuinsfil_02 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define fuinsfil_04 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define fuprtmpl_01 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prlayout_01 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prlayout_03 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prlayout_05 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prlayout_02 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prlayout_04 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prltempl_03 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prltempl_01 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define prltempl_02 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
-#define fuprtmpl_02 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define docshel4_19 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define sdobjpal_08 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
-#define sdobjpal_09 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
-#define sdobjpal_18 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define drviews1_05 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define drviews1_0c SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define fuedibez_06 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define unmodpg_01 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
-#define unmodpg_06 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define drviews5_02 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define drviews5_0c SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
-#define layertab_04 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define layertab_08 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define sdruler_07 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define futxtatt_01 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define fusnapln_01 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define dlgsnap_01 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define dlgsnap_03 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
-#define inspage_05 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define inspage_06 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
-#define sdpage_09 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
-#define app_0b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define app_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define docshell_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define drviewsh_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_04 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_07 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_08 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_0a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_0b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_0d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_0e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_0f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_10 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_11 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_12 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_13 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_14 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_15 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_16 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_17 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_19 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_1a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_1b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_1d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_1e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define slidvish_1f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_04 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_07 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_12 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_17 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_1b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_1f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define outlnvsh_20 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdobjfac_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define drawdoc2_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define drawdoc2_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define drawdoc2_08 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define drawdoc2_0a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_0a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_0b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_0d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_0e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_0f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_10 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_11 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_12 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_13 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_14 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_15 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define sdattr_16 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define anminfo_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define anminfo_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define anminfo_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
-#define anminfo_04 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define anminfo_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define anminfo_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define anminfo_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define anminfo_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define anminfo_09 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define app3_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define app4_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define app1_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define docshel3_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews3_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews3_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews3_09 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews9_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews9_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews9_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
-#define drviews9_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews4_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews4_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews6_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews6_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews6_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews6_06 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews7_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews7_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviews7_06 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviewsa_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviewsa_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define drviewsa_09 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_06 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_07 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_09 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_0c SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_0d SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_0e SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_0f SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_10 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_11 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define fuslsel_12 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define viewshe2_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define viewshe2_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
-#define viewshe2_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshe2_0f SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshe2_14 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshe2_17 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshe2_18 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshe2_19 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshe2_1a SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_02 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_03 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_07 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_08 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_0c SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_0d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_0e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_0f SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define slidview_10 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslhide_01 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslhide_02 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslprms_01 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslprms_02 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslprms_03 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslprms_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslshow_05 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslshow_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslshow_15 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuslshow_16 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshel_03 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshel_0e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshel_11 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define viewshel_14 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuzoom_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
-#define fuscale_01 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuscale_02 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuscale_03 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuscale_04 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_03 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_04 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_06 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_07 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_0a SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_0d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_0e SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_0f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_10 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_11 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuslshw3_13 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuoltext_0a SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define outlview_04 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define outlview_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define outlview_06 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define outlview_17 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define futhes_01 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define futhes_02 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuinsfil_03 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuinsfil_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuinsfil_06 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuinsfil_08 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuprobjs_01 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuprobjs_02 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define fuolbull_03 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define docshel4_12 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define docshel4_1f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define app7_01 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
-#define dlgass_01 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_02 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_03 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_04 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_05 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_06 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_07 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_08 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_09 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_0a SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_0b SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_0c SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_0d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_0e SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_0f SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_10 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_11 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_12 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define dlgass_13 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define splcfg_02 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define splcfg_03 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define optsitem_05 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define optsitem_08 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
-#define optsitem_09 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_0a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_0b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_0c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_0d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_0e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_0f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_10 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_11 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_12 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_13 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_15 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_18 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define optsitem_19 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_01 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_04 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_06 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_07 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_08 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_0a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_0b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_0c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_0d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_0e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_0f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_10 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_11 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_12 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_13 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_14 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_15 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_16 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_17 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_18 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_19 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define animobjs_1a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define diactrl_01 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define diactrl_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
-#define diactrl_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_06 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_07 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_08 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_09 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_0a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_0b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_0c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_0d SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_0e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_0f SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_10 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_11 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_12 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_13 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_14 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_15 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_16 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_17 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_18 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_19 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_1a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_1b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_1c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_1d SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_1e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_1f SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_20 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define diactrl_21 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdobjpal_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdobjpal_07 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdobjpal_0a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdobjpal_15 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdobjpal_16 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdobjpal_20 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdview_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdview_0d SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdview_15 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdview_16 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdview_17 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define fuexhtml_01 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define fuexhtml_02 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define fuexhtml_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define fuexhtml_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdundogr_01 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdundogr_02 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdundogr_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define sdundogr_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define drviews1_0e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define drviews1_17 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define drviews1_18 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
-#define drviews1_1a SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define drviews1_1b SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_06 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_08 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_09 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_0a SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_0b SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define undopage_0c SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconarc_06 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedibez_09 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_06 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuconctl_08 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_06 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuedipo_08 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define drviews8_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define unmodpg_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define unmodpg_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define unmodpg_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define unmodpg_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuslid_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuslid_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuslid_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuslid_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fuslid_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_10 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_12 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_14 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_17 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_18 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_19 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_1c SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_1d SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
-#define fader_1e SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_1f SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_20 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_23 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_24 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_25 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_26 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_27 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_28 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_29 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_2a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
-#define fader_2b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fader_2c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define showview_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define showview_07 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define showview_08 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fupoor_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fupoor_0a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fupoor_11 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define sdwindow_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define bmcache_01 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define bmcache_02 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define bmcache_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_01 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_02 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_07 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_08 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_09 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_0a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_0b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define diadlg_0c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define unslprms_01 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define unslprms_02 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define unslprms_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define unslprms_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define mover_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define mover_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define mover_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define mover_07 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define mover_08 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define mover_09 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fuslshw2_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fuslshw2_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fuslshw2_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
-#define fuslshw2_06 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define fuslshw2_08 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define fuslshw2_09 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define fuslshw2_0a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
-#define fuslshw2_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define fuslshw2_1a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define inspagob_01 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define inspagob_02 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define inspagob_03 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define inspagob_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define inspagob_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define unchss_02 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define unchss_03 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define unchss_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define unchss_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define unchss_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define prlayout_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_01 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_07 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_08 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_09 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_0c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_0e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_0f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel2_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define optdlg_01 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define optdlg_02 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define optdlg_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_01 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_02 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_03 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_07 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_08 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define assclass_09 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define drtxtob_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel5_01 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel5_02 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define docshel5_03 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define sdclient_01 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define sdclient_02 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
-#define sdclient_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdclient_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdclient_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdview2_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdview2_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdview2_08 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdview2_09 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabcontr_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabcontr_06 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabcontr_07 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabcontr_09 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabcontr_0a SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define tabcontr_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define drviews5_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define drviews5_09 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define drviews5_0a SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define drviews5_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define drviews5_0d SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_06 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_07 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_09 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_0a SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define layertab_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define dlgctrls_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdoutl_06 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdoutl_08 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define pubdlg_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define pubdlg_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define sdruler_09 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
-#define prntopts_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define prntopts_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define prntopts_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define prntopts_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define prntopts_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define prntopts_07 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fudraw_07 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fudraw_08 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fulink_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define futransf_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define futransf_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define futransf_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuoaprms_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuoaprms_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuoaprms_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuoaprms_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuinsert_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuinsert_06 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
-#define fuinsert_09 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fuinsert_0a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fuinsert_0b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fulinend_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fuconpol_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fuconpol_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fucopy_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define fuparagr_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define sdtreelb_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define enumdlg_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define clview_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define clview_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define clview_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define clview_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define clview_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define dragserv_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define dragserv_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_09 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
-#define tpoption_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpoption_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpoption_0c SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpoption_0d SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpoption_0e SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpoption_0f SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpoption_10 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_0c SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpscale_0d SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_09 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_0c SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_0d SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_0e SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_0f SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_10 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_11 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_12 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_13 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_14 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_15 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_16 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_17 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_18 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
-#define tpeffect_19 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_1a SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_1b SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_1c SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_1d SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_1e SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_1f SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_20 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_21 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_22 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_23 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_24 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_25 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_26 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_27 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_28 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_29 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_2a SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_2b SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_2c SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_2d SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tpeffect_2e SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unoaprms_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unoaprms_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unoaprms_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unoaprms_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unprlout_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unprlout_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unprlout_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unprlout_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unprlout_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unmovss_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unmovss_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unmovss_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unmovss_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define unmovss_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define tabtempl_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define copydlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define paragr_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define inspage_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define dlgsnap_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define dlgsnap_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define dlgsnap_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_08 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_0b SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_0c SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_14 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_15 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_16 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_17 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_1c SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define sdpage_1e SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define drawdoc3_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define drawdoc3_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define drawdoc3_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
-#define drawdoc3_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawdoc3_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawdoc3_07 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_07 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_0a SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_0b SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_10 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_11 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_13 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_16 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_17 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_19 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_1c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_1d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_1f SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_22 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define drawitem_23 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define stlpool_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define stlpool_0b SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define pglink_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define pglink_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define pglink_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
-#define pglink_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
diff --git a/sd/inc/stlpool.hxx b/sd/inc/stlpool.hxx
index d49d743b6dee..7dfeac99121b 100644
--- a/sd/inc/stlpool.hxx
+++ b/sd/inc/stlpool.hxx
@@ -126,6 +126,8 @@ public:
virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire (void) throw ();
+ virtual void SAL_CALL release (void) throw ();
protected:
void CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily );
diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx
index e592ba45a27e..c91fee735954 100644
--- a/sd/source/core/stlpool.cxx
+++ b/sd/source/core/stlpool.cxx
@@ -1437,6 +1437,8 @@ void SAL_CALL SdStyleSheetPool::dispose() throw (RuntimeException)
// EndListening( *mpDoc );
mpDoc = 0;
+
+ Clear();
}
}
@@ -1475,3 +1477,15 @@ SdStyleSheetVector SdStyleSheetPool::CreateChildList( SdStyleSheet* pSheet )
}
// --------------------------------------------------------------------
+
+void SAL_CALL SdStyleSheetPool::acquire (void) throw ()
+{
+ SdStyleSheetPoolBase::acquire();
+}
+
+void SAL_CALL SdStyleSheetPool::release (void) throw ()
+{
+ SdStyleSheetPoolBase::release();
+}
+
+// --------------------------------------------------------------------
diff --git a/sd/source/ui/animations/CustomAnimation.src b/sd/source/ui/animations/CustomAnimation.src
index 1320e75d3e36..449107f05c75 100644
--- a/sd/source/ui/animations/CustomAnimation.src
+++ b/sd/source/ui/animations/CustomAnimation.src
@@ -202,7 +202,7 @@ Menu RID_CUSTOMANIMATION_FONTSTYLE_POPUP
MenuItem
{
Identifier = CM_UNDERLINED ;
- Text [ en-US ] = "Underlinded" ;
+ Text [ en-US ] = "Underlined" ;
};
};
};
diff --git a/sd/source/ui/func/fupage.cxx b/sd/source/ui/func/fupage.cxx
index de1dadc3ae43..9fb0007cc72c 100644
--- a/sd/source/ui/func/fupage.cxx
+++ b/sd/source/ui/func/fupage.cxx
@@ -84,6 +84,7 @@
#include "undoback.hxx"
#include "sdabstdlg.hxx"
#include "sdresid.hxx"
+#include "sdundogr.hxx"
#include "helpids.h"
namespace sd {
@@ -359,6 +360,8 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent )
( ( (XFillStyleItem*) aMergedAttr.GetItem( XATTR_FILLSTYLE ) )->GetValue() == XFILL_NONE ) ) )
mbPageBckgrdDeleted = TRUE;
+ bool bSetToAllPages = false;
+
// Ask, wether the setting are for the background-page or for the current page
if( !mbMasterPage && bChanges )
{
@@ -374,7 +377,7 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent )
aTit,
aTxt );
aQuestionBox.SetImage( QueryBox::GetStandardImage() );
- mbMasterPage = ( RET_YES == aQuestionBox.Execute() );
+ bSetToAllPages = ( RET_YES == aQuestionBox.Execute() );
}
if( mbPageBckgrdDeleted )
@@ -403,6 +406,48 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent )
pStyleSheet->GetItemSet().Put( *(pTempSet.get()) );
pStyleSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
}
+ else if( bSetToAllPages )
+ {
+ String aComment(SdResId(STR_UNDO_CHANGE_PAGEFORMAT));
+ SfxUndoManager* pUndoMgr = mpDocSh->GetUndoManager();
+ pUndoMgr->EnterListAction(aComment, aComment);
+ SdUndoGroup* pUndoGroup = new SdUndoGroup(mpDoc);
+ pUndoGroup->SetComment(aComment);
+
+ //Set background on all master pages
+ USHORT nMasterPageCount = mpDoc->GetMasterSdPageCount(ePageKind);
+ for (USHORT i = 0; i < nMasterPageCount; ++i)
+ {
+ SdPage *pMasterPage = mpDoc->GetMasterSdPage(i, ePageKind);
+ SdStyleSheet *pStyle =
+ pMasterPage->getPresentationStyle(HID_PSEUDOSHEET_BACKGROUND);
+ StyleSheetUndoAction* pAction =
+ new StyleSheetUndoAction(mpDoc, (SfxStyleSheet*)pStyle, &(*pTempSet.get()));
+ pUndoGroup->AddAction(pAction);
+ pStyle->GetItemSet().Put( *(pTempSet.get()) );
+ pStyle->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
+ }
+
+ //Remove background from all pages to reset to the master bg
+ USHORT nPageCount(mpDoc->GetSdPageCount(ePageKind));
+ for(USHORT i=0; i<nPageCount; ++i)
+ {
+ SdPage *pPage = mpDoc->GetSdPage(i, ePageKind);
+
+ const SfxItemSet& rFillAttributes = pPage->getSdrPageProperties().GetItemSet();
+ if(XFILL_NONE != ((const XFillStyleItem&)rFillAttributes.Get(XATTR_FILLSTYLE)).GetValue())
+ {
+ SdBackgroundObjUndoAction *pBackgroundObjUndoAction = new SdBackgroundObjUndoAction(*mpDoc, *pPage, rFillAttributes);
+ pUndoGroup->AddAction(pBackgroundObjUndoAction);
+ pPage->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
+ pPage->ActionChanged();
+ }
+ }
+
+ pUndoMgr->AddUndoAction(pUndoGroup);
+ pUndoMgr->LeaveListAction();
+
+ }
const SfxPoolItem *pItem;
if( SFX_ITEM_SET == pTempSet->GetItemState( EE_PARA_WRITINGDIR, sal_False, &pItem ) )
diff --git a/sd/source/ui/func/fupoor.cxx b/sd/source/ui/func/fupoor.cxx
index bb6f6e7b6908..c1df44e52677 100644
--- a/sd/source/ui/func/fupoor.cxx
+++ b/sd/source/ui/func/fupoor.cxx
@@ -104,6 +104,7 @@ FuPoor::FuPoor (
bNoScrollUntilInside (TRUE),
bScrollable (FALSE),
bDelayActive (FALSE),
+ bFirstMouseMove (FALSE),
// #95491# remember MouseButton state
mnCode(0)
{
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index d58cfcb3f6c9..0afcb7df053b 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -51,7 +51,8 @@
#include <sfx2/imagemgr.hxx>
#include <sfx2/request.hxx>
-#include "sfx2/docfile.hxx"
+#include <sfx2/docfile.hxx>
+#include <sfx2/app.hxx>
#include <svx/unoapi.hxx>
#include <svx/svdoole2.hxx>
@@ -3472,39 +3473,11 @@ void SAL_CALL SlideshowImpl::gotoNextSlide( ) throw (RuntimeException)
{
if( maPresSettings.mnPauseTimeout )
{
- boost::scoped_ptr< Graphic > pGraphic;
-
- if( maPresSettings.mbShowPauseLogo )
+ if( mpShowWindow )
{
- // load about image from module path
- String aBmpFileName( RTL_CONSTASCII_USTRINGPARAM("about.bmp") );
- INetURLObject aObj( SvtPathOptions().GetModulePath(), INET_PROT_FILE );
- aObj.insertName( aBmpFileName );
- SvFileStream aStrm( aObj.PathToFileName(), STREAM_STD_READ );
- if ( !aStrm.GetError() )
- {
- Bitmap aBmp;
- aStrm >> aBmp;
- pGraphic.reset( new Graphic(aBmp) );
- pGraphic->SetPrefMapMode(MAP_PIXEL);
- }
- else
- {
- //if no image is located in the module path
- //use default logo from iso resource:
-
- String aMgrName( RTL_CONSTASCII_USTRINGPARAM( "iso" ) );
- boost::scoped_ptr< ResMgr > pResMgr( ResMgr::CreateResMgr( U2S( aMgrName )) );
- DBG_ASSERT(pResMgr,"No ResMgr found");
- if(pResMgr.get())
- {
- pGraphic.reset( new Graphic( Bitmap( ResId( RID_DEFAULT_ABOUT_BMP_LOGO, *pResMgr ) ) ) );
- pGraphic->SetPrefMapMode(MAP_PIXEL);
- }
- }
+ Graphic aGraphic( SfxApplication::GetApplicationLogo().GetBitmapEx() );
+ mpShowWindow->SetPauseMode( 0, maPresSettings.mnPauseTimeout, &aGraphic );
}
- if( mpShowWindow )
- mpShowWindow->SetPauseMode( 0, maPresSettings.mnPauseTimeout, pGraphic.get() );
}
else
{
diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx
index 54c3f88a6916..d4ea1dce196f 100644
--- a/sd/source/ui/unoidl/unoobj.cxx
+++ b/sd/source/ui/unoidl/unoobj.cxx
@@ -737,22 +737,6 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
aAny <<= aName;
}
}
- else if( aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( sUNO_shape_zorder ) ) )
- {
- SdrObject* pObj = mpShape->GetSdrObject();
- SdPage* pPage = pObj ? (SdPage*)pObj->GetPage() : NULL;
- if( pPage && pPage == pObj->GetObjList() && pPage->IsMasterPage() && pPage->GetPageKind() == PK_STANDARD )
- {
- sal_Int32 nOrdNum;
- if( aAny >>= nOrdNum )
- {
- // if this is a masterpage, there is always a background shape with the ord num 0
- // so we add one to the api ordnum to hide the background shape over the api
- nOrdNum++;
- aAny <<= nOrdNum;
- }
- }
- }
mpShape->_setPropertyValue(aPropertyName, aAny);
}
@@ -910,30 +894,6 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
aRet <<= aName;
}
}
- else if( PropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( sUNO_shape_zorder ) ) )
- {
- SdrObject* pObj = mpShape->GetSdrObject();
- SdPage* pPage = pObj ? (SdPage*)pObj->GetPage() : NULL;
- if( pPage && pPage == pObj->GetObjList() && pPage->IsMasterPage() && pPage->GetPageKind() == PK_STANDARD )
- {
- sal_Int32 nOrdNum;
- if( aRet >>= nOrdNum )
- {
- // if this is a masterpage, there is always a background shape with the ord num 0
- // so we add one to the api ordnum to hide the background shape over the api
- if( nOrdNum > 0 )
- {
- nOrdNum--;
- aRet <<= nOrdNum;
- }
- else
- {
- DBG_ERROR( "Masterpage without a background shape, ZOrder property will be corrupt!" );
- }
- }
- }
- }
-
}
return aRet;
diff --git a/sdext/source/minimizer/description.xml b/sdext/source/minimizer/description.xml
index 3d2ec9c98bd7..64a67a05b343 100644..100755
--- a/sdext/source/minimizer/description.xml
+++ b/sdext/source/minimizer/description.xml
@@ -30,8 +30,8 @@
</display-name>
<icon>
- <default xlink:href="bitmaps/em47.png" />
- <high-contrast xlink:href="bitmaps/em47_hc.png" />
+ <default xlink:href="bitmaps/extension_32.png" />
+ <high-contrast xlink:href="bitmaps/extension_32_h.png" />
</icon>
</description>
diff --git a/sdext/source/minimizer/images/em47.png b/sdext/source/minimizer/images/em47.png
deleted file mode 100644
index cf3fe5f0d598..000000000000
--- a/sdext/source/minimizer/images/em47.png
+++ /dev/null
Binary files differ
diff --git a/sdext/source/minimizer/images/em47_hc.png b/sdext/source/minimizer/images/em47_hc.png
deleted file mode 100644
index 535a6bfdff4f..000000000000
--- a/sdext/source/minimizer/images/em47_hc.png
+++ /dev/null
Binary files differ
diff --git a/sdext/source/minimizer/makefile.mk b/sdext/source/minimizer/makefile.mk
index 5b14f7215fd0..8a3a385fc8f2 100644..100755
--- a/sdext/source/minimizer/makefile.mk
+++ b/sdext/source/minimizer/makefile.mk
@@ -103,8 +103,8 @@ COMPONENT_BITMAPS= \
$(EXTENSIONDIR)$/bitmaps$/minimizepresi_80_h.png
COMPONENT_IMAGES=\
- $(EXTENSIONDIR)$/bitmaps$/em47.png \
- $(EXTENSIONDIR)$/bitmaps$/em47_hc.png
+ $(EXTENSIONDIR)$/bitmaps$/extension_32.png \
+ $(EXTENSIONDIR)$/bitmaps$/extension_32_h.png
# rather freestyle or common to all?
COMPONENT_HELP= \
@@ -129,7 +129,7 @@ $(COMPONENT_BITMAPS) : $(SOLARSRC)$/$(RSCDEFIMG)$/minimizer$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
-$(COMPONENT_IMAGES) : images$/$$(@:f)
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
diff --git a/sdext/source/pdfimport/config/description.xml b/sdext/source/pdfimport/config/description.xml
index a49f81ff2c42..ec30133996c8 100644..100755
--- a/sdext/source/pdfimport/config/description.xml
+++ b/sdext/source/pdfimport/config/description.xml
@@ -29,8 +29,8 @@
</display-name>
<icon>
- <default xlink:href="images/pdfiext.png" />
- <high-contrast xlink:href="images/pdfiext_hc.png" />
+ <default xlink:href="images/extension_32.png" />
+ <high-contrast xlink:href="images/extension_32_h.png" />
</icon>
</description>
diff --git a/sdext/source/pdfimport/images/pdfiext.png b/sdext/source/pdfimport/images/pdfiext.png
deleted file mode 100644
index cf3fe5f0d598..000000000000
--- a/sdext/source/pdfimport/images/pdfiext.png
+++ /dev/null
Binary files differ
diff --git a/sdext/source/pdfimport/images/pdfiext_hc.png b/sdext/source/pdfimport/images/pdfiext_hc.png
deleted file mode 100644
index 535a6bfdff4f..000000000000
--- a/sdext/source/pdfimport/images/pdfiext_hc.png
+++ /dev/null
Binary files differ
diff --git a/sdext/source/pdfimport/makefile.mk b/sdext/source/pdfimport/makefile.mk
index 436345216b55..8a7f7de20e18 100644..100755
--- a/sdext/source/pdfimport/makefile.mk
+++ b/sdext/source/pdfimport/makefile.mk
@@ -125,8 +125,8 @@ COMPONENT_LIBRARIES= \
$(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
COMPONENT_IMAGES=\
- $(EXTENSIONDIR)$/images$/pdfiext.png \
- $(EXTENSIONDIR)$/images$/pdfiext_hc.png
+ $(EXTENSIONDIR)$/images$/extension_32.png \
+ $(EXTENSIONDIR)$/images$/extension_32_h.png
EXTENSION_PACKDEPS=$(CONVERTER_FILE) $(COMPONENT_DIALOGS) $(COMPONENT_HELP) $(COMPONENT_IMAGES) makefile.mk
@@ -148,7 +148,7 @@ $(COMPONENT_HELP) : help$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
-$(COMPONENT_IMAGES) : images$/$$(@:f)
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
.ENDIF # L10N_framework
diff --git a/sdext/source/presenter/bitmaps/em47.png b/sdext/source/presenter/bitmaps/em47.png
deleted file mode 100644
index cf3fe5f0d598..000000000000
--- a/sdext/source/presenter/bitmaps/em47.png
+++ /dev/null
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/em47_hc.png b/sdext/source/presenter/bitmaps/em47_hc.png
deleted file mode 100644
index 535a6bfdff4f..000000000000
--- a/sdext/source/presenter/bitmaps/em47_hc.png
+++ /dev/null
Binary files differ
diff --git a/sdext/source/presenter/description.xml b/sdext/source/presenter/description.xml
index 3919bef973a4..ede52f0bf1bb 100644..100755
--- a/sdext/source/presenter/description.xml
+++ b/sdext/source/presenter/description.xml
@@ -30,8 +30,8 @@
</display-name>
<icon>
- <default xlink:href="bitmaps/em47.png" />
- <high-contrast xlink:href="bitmaps/em47_hc.png" />
+ <default xlink:href="bitmaps/extension_32.png" />
+ <high-contrast xlink:href="bitmaps/extension_32_h.png" />
</icon>
</description>
diff --git a/sdext/source/presenter/makefile.mk b/sdext/source/presenter/makefile.mk
index b0bedecd4f8b..08a3470fc24d 100644..100755
--- a/sdext/source/presenter/makefile.mk
+++ b/sdext/source/presenter/makefile.mk
@@ -231,9 +231,11 @@ COMPONENT_BITMAPS= \
\
$(ZIP1DIR)$/bitmaps$/LabelMouseOverLeft.png \
$(ZIP1DIR)$/bitmaps$/LabelMouseOverCenter.png \
- $(ZIP1DIR)$/bitmaps$/LabelMouseOverRight.png \
- $(ZIP1DIR)$/bitmaps$/em47.png \
- $(ZIP1DIR)$/bitmaps$/em47_hc.png
+ $(ZIP1DIR)$/bitmaps$/LabelMouseOverRight.png
+
+COMPONENT_IMAGES=\
+ $(ZIP1DIR)$/bitmaps$/extension_32.png \
+ $(ZIP1DIR)$/bitmaps$/extension_32_h.png
COMPONENT_MANIFEST= \
$(ZIP1DIR)$/META-INF$/manifest.xml
@@ -257,6 +259,7 @@ ZIP1DEPS= \
$(COMPONENT_MANIFEST) \
$(COMPONENT_FILES) \
$(COMPONENT_BITMAPS) \
+ $(COMPONENT_IMAGES) \
$(COMPONENT_LIBRARY) \
$(COMPONENT_HELP)
# $(COMPONENT_MERGED_XCU) \
@@ -290,6 +293,10 @@ $(COMPONENT_BITMAPS) : bitmaps$/$$(@:f)
@-$(MKDIRHIER) $(@:d)
+$(COPY) $< $@
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
$(COMPONENT_LIBRARY) : $(DLLDEST)$/$$(@:f)
@-$(MKDIRHIER) $(@:d)
+$(COPY) $< $@
diff --git a/set_soenv.in b/set_soenv.in
index 64815d418f99..58c81ee568f1 100644
--- a/set_soenv.in
+++ b/set_soenv.in
@@ -510,9 +510,9 @@ elsif ( $platform =~ m/linux/ )
elsif ($platform =~ m/^alpha/)
{ print "Setting Linux Alpha specific values... ";
$outfile = "LinuxAlphaEnv.Set";
- $CPU = "A";
- $CPUNAME = "ALPHA_";
- $OUTPATH = "unxlnga";
+ $CPU = "L";
+ $CPUNAME = "AXP";
+ $OUTPATH = "unxlngaxp";
$JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha";
$JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha".$ds."server";
$JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."alpha".$ds."native_threads";
diff --git a/setup_native/prj/d.lst b/setup_native/prj/d.lst
index 9d429454ebba..67e9573107b3 100644
--- a/setup_native/prj/d.lst
+++ b/setup_native/prj/d.lst
@@ -1,4 +1,5 @@
mkdir: %_DEST%\bin%_EXT%\osl
+mkdir: %_DEST%\bin%_EXT%\broffice
..\%__SRC%\bin\*.dll %_DEST%\bin%_EXT%\*.dll
..\%__SRC%\bin\*.exe %_DEST%\bin%_EXT%\*.exe
..\%__SRC%\class\*.jar %_DEST%\bin%_EXT%\*.jar
@@ -31,7 +32,13 @@ mkdir: %_DEST%\bin%_EXT%\osolsmf
..\source\linux\*.dat %_DEST%\bin%_EXT%\*.dat
..\source\mac\*.icns %_DEST%\bin%_EXT%\*.icns
..\source\mac\Info.plist.langpack %_DEST%\bin%_EXT%\Info.plist.langpack
+..\source\mac\ooo\osxdndinstall.png %_DEST%\bin%_EXT%\osl\osxdndinstall.png
+..\source\mac\ooo\DS_Store %_DEST%\bin%_EXT%\osl\DS_Store
+..\source\mac\ooo\DS_Store_Langpack %_DEST%\bin%_EXT%\osl\DS_Store_Langpack
+..\source\mac\broffice\osxdndinstall.png %_DEST%\bin%_EXT%\broffice\osxdndinstall.png
+..\source\mac\broffice\DS_Store %_DEST%\bin%_EXT%\broffice\DS_Store
..\source\java\openofficeorg_setup.gif %_DEST%\bin%_EXT%\osl\Setup.gif
+..\source\java\brofficeorg_setup.gif %_DEST%\bin%_EXT%\broffice\Setup.gif
..\source\java\javaversion.dat %_DEST%\bin%_EXT%\javaversion.dat
..\source\java\javaversion2.dat %_DEST%\bin%_EXT%\javaversion2.dat
..\source\opensolaris\bundledextensions\installed %_DEST%\bin%_EXT%\osolsmf\installed
@@ -39,6 +46,7 @@ mkdir: %_DEST%\bin%_EXT%\osolsmf
..\source\opensolaris\bundledextensions\ooo_bundled_extensions.xml %_DEST%\bin%_EXT%\osolsmf\ooo_bundled_extensions.xml
..\source\opensolaris\bundledextensions\svc-ooo_bundled_extensions %_DEST%\bin%_EXT%\osolsmf\svc-ooo_bundled_extensions
..\source\packinfo\solariscopyrightfile %_DEST%\bin%_EXT%\solariscopyrightfile
+..\source\packinfo\linuxcopyrightfile %_DEST%\bin%_EXT%\linuxcopyrightfile
..\source\packinfo\*.txt %_DEST%\bin%_EXT%\*.txt
..\source\packinfo\*.pcp %_DEST%\bin%_EXT%\*.pcp
..\scripts\admin.pl %_DEST%\bin%_EXT%\admin.pl
diff --git a/setup_native/source/java/brofficeorg_setup.gif b/setup_native/source/java/brofficeorg_setup.gif
new file mode 100644
index 000000000000..570d8e462a27
--- /dev/null
+++ b/setup_native/source/java/brofficeorg_setup.gif
Binary files differ
diff --git a/setup_native/source/java/javaversion.dat b/setup_native/source/java/javaversion.dat
index 461bd7d6579a..a629a4037269 100755
--- a/setup_native/source/java/javaversion.dat
+++ b/setup_native/source/java/javaversion.dat
@@ -26,30 +26,30 @@
#*************************************************************************
# GUI String in the installer ("Java Runtime Environment (${JAVAVERSION})")
-JAVAVERSION=Java 6 Update 19
-WINDOWSJAVAVERSION=Java 6 Update 19
+JAVAVERSION=Java 6 Update 20
+WINDOWSJAVAVERSION=Java 6 Update 20
# Windows (scp2 and downloadtemplate.nsi)
-WINDOWSJAVAFILENAME=jre-6u19-windows-i586.exe
-WINDOWSJAVAREGISTRYENTRY=1.6.0_19
+WINDOWSJAVAFILENAME=jre-6u20-windows-i586.exe
+WINDOWSJAVAREGISTRYENTRY=1.6.0_20
# Linux (scp2)
-LINUXJAVAFILENAME=jre-6u19-linux-i586.rpm
+LINUXJAVAFILENAME=jre-6u20-linux-i586.rpm
# Linux (rpmUnit.xml, rpm -qp <filename> )
-LINUXJAVANAME=jre-1.6.0_19-fcs
+LINUXJAVANAME=jre-1.6.0_20-fcs
# Linux-x64 (scp2)
-LINUXX64JAVAFILENAME=jre-6u19-linux-amd64.rpm
+LINUXX64JAVAFILENAME=jre-6u20-linux-amd64.rpm
# Solaris Sparc (scp2)
-SOLSJAVARTPACKED=SUNWj6rt_1_6_0_19_sparc.tar.gz
-SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_19_sparc.tar.gz
-SOLSJAVAMANPACKED=SUNWj6man_1_6_0_19_sparc.tar.gz
+SOLSJAVARTPACKED=SUNWj6rt_1_6_0_20_sparc.tar.gz
+SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_20_sparc.tar.gz
+SOLSJAVAMANPACKED=SUNWj6man_1_6_0_20_sparc.tar.gz
# Solaris x86 (scp2)
-SOLIJAVARTPACKED=SUNWj6rt_1_6_0_19_x86.tar.gz
-SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_19_x86.tar.gz
-SOLIJAVAMANPACKED=SUNWj6man_1_6_0_19_x86.tar.gz
+SOLIJAVARTPACKED=SUNWj6rt_1_6_0_20_x86.tar.gz
+SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_20_x86.tar.gz
+SOLIJAVAMANPACKED=SUNWj6man_1_6_0_20_x86.tar.gz
# Solaris (pkgUnit.xml, needs only to be changed in major changes)
SOLARISJAVART=SUNWj6rt
diff --git a/setup_native/source/java/javaversion2.dat b/setup_native/source/java/javaversion2.dat
index 461bd7d6579a..a629a4037269 100644
--- a/setup_native/source/java/javaversion2.dat
+++ b/setup_native/source/java/javaversion2.dat
@@ -26,30 +26,30 @@
#*************************************************************************
# GUI String in the installer ("Java Runtime Environment (${JAVAVERSION})")
-JAVAVERSION=Java 6 Update 19
-WINDOWSJAVAVERSION=Java 6 Update 19
+JAVAVERSION=Java 6 Update 20
+WINDOWSJAVAVERSION=Java 6 Update 20
# Windows (scp2 and downloadtemplate.nsi)
-WINDOWSJAVAFILENAME=jre-6u19-windows-i586.exe
-WINDOWSJAVAREGISTRYENTRY=1.6.0_19
+WINDOWSJAVAFILENAME=jre-6u20-windows-i586.exe
+WINDOWSJAVAREGISTRYENTRY=1.6.0_20
# Linux (scp2)
-LINUXJAVAFILENAME=jre-6u19-linux-i586.rpm
+LINUXJAVAFILENAME=jre-6u20-linux-i586.rpm
# Linux (rpmUnit.xml, rpm -qp <filename> )
-LINUXJAVANAME=jre-1.6.0_19-fcs
+LINUXJAVANAME=jre-1.6.0_20-fcs
# Linux-x64 (scp2)
-LINUXX64JAVAFILENAME=jre-6u19-linux-amd64.rpm
+LINUXX64JAVAFILENAME=jre-6u20-linux-amd64.rpm
# Solaris Sparc (scp2)
-SOLSJAVARTPACKED=SUNWj6rt_1_6_0_19_sparc.tar.gz
-SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_19_sparc.tar.gz
-SOLSJAVAMANPACKED=SUNWj6man_1_6_0_19_sparc.tar.gz
+SOLSJAVARTPACKED=SUNWj6rt_1_6_0_20_sparc.tar.gz
+SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_20_sparc.tar.gz
+SOLSJAVAMANPACKED=SUNWj6man_1_6_0_20_sparc.tar.gz
# Solaris x86 (scp2)
-SOLIJAVARTPACKED=SUNWj6rt_1_6_0_19_x86.tar.gz
-SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_19_x86.tar.gz
-SOLIJAVAMANPACKED=SUNWj6man_1_6_0_19_x86.tar.gz
+SOLIJAVARTPACKED=SUNWj6rt_1_6_0_20_x86.tar.gz
+SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_20_x86.tar.gz
+SOLIJAVAMANPACKED=SUNWj6man_1_6_0_20_x86.tar.gz
# Solaris (pkgUnit.xml, needs only to be changed in major changes)
SOLARISJAVART=SUNWj6rt
diff --git a/setup_native/source/mac/broffice/DS_Store b/setup_native/source/mac/broffice/DS_Store
new file mode 100644
index 000000000000..06aad72c93a0
--- /dev/null
+++ b/setup_native/source/mac/broffice/DS_Store
Binary files differ
diff --git a/setup_native/source/mac/broffice/osxdndinstall.png b/setup_native/source/mac/broffice/osxdndinstall.png
new file mode 100644
index 000000000000..233d4bbc84b9
--- /dev/null
+++ b/setup_native/source/mac/broffice/osxdndinstall.png
Binary files differ
diff --git a/instsetoo_native/res/DS_Store b/setup_native/source/mac/ooo/DS_Store
index 632e6aff95be..632e6aff95be 100644
--- a/instsetoo_native/res/DS_Store
+++ b/setup_native/source/mac/ooo/DS_Store
Binary files differ
diff --git a/instsetoo_native/res/DS_Store_Langpack b/setup_native/source/mac/ooo/DS_Store_Langpack
index 1b53eba75b74..1b53eba75b74 100644
--- a/instsetoo_native/res/DS_Store_Langpack
+++ b/setup_native/source/mac/ooo/DS_Store_Langpack
Binary files differ
diff --git a/setup_native/source/mac/ooo/osxdndinstall.png b/setup_native/source/mac/ooo/osxdndinstall.png
new file mode 100644
index 000000000000..7eb5c76649bb
--- /dev/null
+++ b/setup_native/source/mac/ooo/osxdndinstall.png
Binary files differ
diff --git a/setup_native/source/packinfo/linuxcopyrightfile b/setup_native/source/packinfo/linuxcopyrightfile
new file mode 100644
index 000000000000..6e2c0ef08e79
--- /dev/null
+++ b/setup_native/source/packinfo/linuxcopyrightfile
@@ -0,0 +1,2 @@
+Copyright 2000, 2010 Oracle and/or its affiliates. All rights reserved.
+Use is subject to license terms.
diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt
index b9c26f9f9572..fb04b347fcdf 100755
--- a/setup_native/source/packinfo/packinfo_office.txt
+++ b/setup_native/source/packinfo/packinfo_office.txt
@@ -732,6 +732,22 @@ packageversion = "%PACKAGEVERSION"
End
Start
+module = "gid_Module_Root_Extension_Dictionary_Ku_Tr"
+script = "shellscripts_extensions.txt"
+solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ku-TR"
+solarisrequires = "%SOLSUREPACKAGEPREFIX-ure, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core02, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core03, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core06, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core07, %PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ku-TR"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPRODUCTNAME%BRANDPACKAGEVERSION"
+linuxpatchrequires = ""
+copyright = "1999-2009 by Sun Microsystems"
+solariscopyright = "solariscopyrightfile"
+vendor = "Sun Microsystems, Inc."
+description = "Ku-TR dictionary for %PRODUCTNAME %PRODUCTVERSION"
+destpath = "/opt"
+packageversion = "%PACKAGEVERSION"
+End
+
+Start
module = "gid_Module_Root_Extension_Dictionary_Lt"
script = "shellscripts_extensions.txt"
solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-lt"
diff --git a/setup_native/source/packinfo/spellchecker_selection.txt b/setup_native/source/packinfo/spellchecker_selection.txt
index 526058086f67..8d5cb0fc83b8 100644
--- a/setup_native/source/packinfo/spellchecker_selection.txt
+++ b/setup_native/source/packinfo/spellchecker_selection.txt
@@ -25,6 +25,7 @@ hu = "hu,de-DE,en-US"
it = "it,de-DE,en-US,fr"
ja = "EMPTY,en-US"
ko = "EMPTY,en-US"
+ku = "ku-TR,en-US"
lt = "lt,en-US"
nb = "no,en-US,fr,de-DE,es"
ne = "ne,en-US"
diff --git a/setup_native/source/win32/msi-encodinglist.txt b/setup_native/source/win32/msi-encodinglist.txt
index 81258d61f38b..5185a9ea642e 100644
--- a/setup_native/source/win32/msi-encodinglist.txt
+++ b/setup_native/source/win32/msi-encodinglist.txt
@@ -42,7 +42,6 @@ gu 0 1095 # Gujarati
gu-IN 0 1095 # Gujarati
he 1255 1037
hi 0 1081
-hi-IN 0 1081 # hindi
hr 1250 1050 # Croatian
hu 1250 1038
hy 0 1067 # Armenian
@@ -93,6 +92,7 @@ pt 1252 2070
pt-BR 1252 1046
pt-PT 1252 2070
ps 0 2171
+ca-XV 1252 32771 # Catalan Valencian
rm 0 1047 # Raeto-Romance
ro 1250 1048 # Romanian
ru 1251 1049
diff --git a/setup_native/source/win32/nsis/brobanner.bmp b/setup_native/source/win32/nsis/brobanner.bmp
index 37f517176524..7ab14d2a6245 100644
--- a/setup_native/source/win32/nsis/brobanner.bmp
+++ b/setup_native/source/win32/nsis/brobanner.bmp
Binary files differ
diff --git a/setup_native/source/win32/nsis/brobitmap.bmp b/setup_native/source/win32/nsis/brobitmap.bmp
index 0c5e11da76d5..f9e9e9b2d44b 100644
--- a/setup_native/source/win32/nsis/brobitmap.bmp
+++ b/setup_native/source/win32/nsis/brobitmap.bmp
Binary files differ
diff --git a/sfx2/inc/sfx2/Metadatable.hxx b/sfx2/inc/sfx2/Metadatable.hxx
index 068a6c4a4544..273eb1afef87 100644
--- a/sfx2/inc/sfx2/Metadatable.hxx
+++ b/sfx2/inc/sfx2/Metadatable.hxx
@@ -98,8 +98,8 @@ public:
const bool i_bCopyPrecedesSource = false);
/** create an Undo Metadatable, which remembers this' reference */
- ::boost::shared_ptr<MetadatableUndo> CreateUndo(
- const bool i_isDelete = false);
+ ::boost::shared_ptr<MetadatableUndo> CreateUndo() const;
+ ::boost::shared_ptr<MetadatableUndo> CreateUndoForDelete();
/** restore this from Undo Metadatable */
void RestoreMetadata(::boost::shared_ptr<MetadatableUndo> const& i_pUndo);
diff --git a/sfx2/inc/sfx2/app.hxx b/sfx2/inc/sfx2/app.hxx
index 17b2dee417cd..8a49fde7b958 100644
--- a/sfx2/inc/sfx2/app.hxx
+++ b/sfx2/inc/sfx2/app.hxx
@@ -33,6 +33,7 @@
#include <tools/solar.h>
#include <svl/smplhint.hxx>
#include <svl/poolitem.hxx>
+#include <vcl/image.hxx>
#include <tools/ref.hxx>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/script/XLibraryContainer.hpp>
@@ -316,6 +317,9 @@ public:
SAL_DLLPRIVATE SfxModule* GetModule_Impl();
SAL_DLLPRIVATE ResMgr* GetOffResManager_Impl();
//#endif
+
+ /** loads the application logo as used in the about dialog and impress slideshow pause screen */
+ static Image GetApplicationLogo();
};
#define SFX_APP() SfxGetpApp()
diff --git a/sfx2/inc/sfx2/objsh.hxx b/sfx2/inc/sfx2/objsh.hxx
index 5fc5a641fd44..d514235cbfa2 100644
--- a/sfx2/inc/sfx2/objsh.hxx
+++ b/sfx2/inc/sfx2/objsh.hxx
@@ -398,7 +398,8 @@ public:
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams,
::com::sun::star::uno::Any& aRet,
::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex,
- ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam,
+ bool bRaiseError = true
);
static ErrCode CallXScript(
@@ -407,7 +408,8 @@ public:
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams,
::com::sun::star::uno::Any& aRet,
::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex,
- ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam,
+ bool bRaiseError = true
);
/** adjusts the internal macro mode, according to the current security settings
diff --git a/sfx2/qa/complex/DocumentMetadataAccessTest.java b/sfx2/qa/complex/DocumentMetadataAccessTest.java
index 05dc523d6f8b..a61280c45fe5 100644
--- a/sfx2/qa/complex/DocumentMetadataAccessTest.java
+++ b/sfx2/qa/complex/DocumentMetadataAccessTest.java
@@ -42,6 +42,7 @@ import com.sun.star.lang.WrappedTargetException;
import com.sun.star.lang.WrappedTargetRuntimeException;
import com.sun.star.beans.XPropertySet;
import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.Pair;
import com.sun.star.beans.StringPair;
import com.sun.star.container.XEnumerationAccess;
import com.sun.star.container.XEnumeration;
@@ -689,23 +690,25 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
log.println("Checking RDFa in loaded test document...");
XMetadatable xPara;
- Statement[] stmts;
+ Pair<Statement[], Boolean> result;
Statement x_FooBarLit1 = new Statement(foo, bar, mkLit("1"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 1",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FooBarLit1
}));
Statement x_FooBarLit2 = new Statement(foo, bar, mkLit("2"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 2",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FooBarLit2
}));
@@ -713,37 +716,40 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
new Statement(blank1, bar, mkLit("3"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 3",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_BlankBarLit3
}));
XBlankNode b3 = (XBlankNode) UnoRuntime.queryInterface(
- XBlankNode.class, stmts[0].Subject);
+ XBlankNode.class, result.First[0].Subject);
Statement x_BlankBarLit4 =
new Statement(blank2, bar, mkLit("4"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 4",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_BlankBarLit4
}));
XBlankNode b4 = (XBlankNode) UnoRuntime.queryInterface(
- XBlankNode.class, stmts[0].Subject);
+ XBlankNode.class, result.First[0].Subject);
Statement x_BlankBarLit5 =
new Statement(blank1, bar, mkLit("5"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 5",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_BlankBarLit5
}));
XBlankNode b5 = (XBlankNode) UnoRuntime.queryInterface(
- XBlankNode.class, stmts[0].Subject);
+ XBlankNode.class, result.First[0].Subject);
assure("RDFa: 3 != 4",
!b3.getStringValue().equals(b4.getStringValue()));
@@ -754,9 +760,10 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
Statement x_FooBazLit6 = new Statement(foo, baz, mkLit("6"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 6",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FooBarLit6, x_FooBazLit6
}));
@@ -765,9 +772,10 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
Statement x_FooFooLit7 = new Statement(foo, foo, mkLit("7"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 7",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FooBarLit7, x_FooBazLit7, x_FooFooLit7
}));
@@ -776,43 +784,41 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
Statement x_FooBarLit = new Statement(foo, bar, lit, null);
Statement x_FooBarLittype = new Statement(foo, bar, lit_type, null);
- Statement x_FooLabelLit8 =
- new Statement(foo, rdfs_label, mkLit("8"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 8",
- eq(stmts, new Statement[] {
- x_FooBarLit, x_FooLabelLit8
+ result.Second &&
+ eq(result.First, new Statement[] {
+ x_FooBarLit
}));
- Statement x_FooLabelLit9 =
- new Statement(foo, rdfs_label, mkLit("9"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 9",
- eq(stmts, new Statement[] {
- x_FooBarLit, x_FooLabelLit9
+ result.Second &&
+ eq(result.First, new Statement[] {
+ x_FooBarLit
}));
- Statement x_FooLabelLit10 =
- new Statement(foo, rdfs_label, mkLit("10"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 10",
- eq(stmts, new Statement[] {
- x_FooBarLittype, x_FooLabelLit10
+ result.Second &&
+ eq(result.First, new Statement[] {
+ x_FooBarLittype
}));
Statement x_FooBarLit11
= new Statement(foo, bar, mkLit("11", bar), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 11",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FooBarLit11
}));
@@ -821,66 +827,67 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
new Statement(xFile, bar, mkLit("12"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 12",
- eq(stmts, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FileBarLit12
}));
- Statement x_FooLabelLit13 =
- new Statement(foo, rdfs_label, mkLit("13"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 13",
- eq(stmts, new Statement[] {
- x_FooBarLit, x_FooLabelLit13
+ result.Second &&
+ eq(result.First, new Statement[] {
+ x_FooBarLit
}));
Statement x_FooLabelLit14 =
new Statement(foo, rdfs_label, mkLit("14"), null);
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
+ result = xRep.getStatementRDFa(xPara);
assure("RDFa: 14",
- eq(stmts, new Statement[] {
- x_FooBarLit, x_FooLabelLit14
+ result.Second &&
+ eq(result.First, new Statement[] {
+ x_FooBarLit
}));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 15", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 15", eq(result.First, new Statement[] { } ));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 16", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 16", eq(result.First, new Statement[] { } ));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 17", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 17", eq(result.First, new Statement[] { } ));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 18", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 18", eq(result.First, new Statement[] { } ));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 19", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 19", eq(result.First, new Statement[] { } ));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 20", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 20", eq(result.First, new Statement[] { } ));
xPara = (XMetadatable) UnoRuntime.queryInterface(
XMetadatable.class, xEnum.nextElement());
- stmts = xRep.getStatementRDFa(xPara);
- assure("RDFa: 21", eq(stmts, new Statement[] { } ));
+ result = xRep.getStatementRDFa(xPara);
+ assure("RDFa: 21", eq(result.First, new Statement[] { } ));
log.println("...done");
diff --git a/sfx2/source/dialog/about.cxx b/sfx2/source/dialog/about.cxx
index 66d4146d9e62..4635733b934d 100644
--- a/sfx2/source/dialog/about.cxx
+++ b/sfx2/source/dialog/about.cxx
@@ -109,6 +109,48 @@ static bool impl_loadBitmap(
return false;
}
+/** loads the application logo as used in the about dialog and impress slideshow pause screen */
+Image SfxApplication::GetApplicationLogo()
+{
+ Image aAppLogo;
+
+ rtl::OUString aAbouts( RTL_CONSTASCII_USTRINGPARAM( ABOUT_BITMAP_STRINGLIST ) );
+ bool bLoaded = false;
+ sal_Int32 nIndex = 0;
+ do
+ {
+ bLoaded = impl_loadBitmap(
+ rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
+ aAbouts.getToken( 0, ',', nIndex ), aAppLogo );
+ }
+ while ( !bLoaded && ( nIndex >= 0 ) );
+
+ // fallback to "about.bmp"
+ if ( !bLoaded )
+ {
+ bLoaded = impl_loadBitmap(
+ rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ),
+ rtl::OUString::createFromAscii( "about.png" ), aAppLogo );
+ if ( !bLoaded )
+ bLoaded = impl_loadBitmap(
+ rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ),
+ rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo );
+ }
+
+ if ( !bLoaded )
+ {
+ bLoaded = impl_loadBitmap(
+ rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
+ rtl::OUString::createFromAscii( "about.png" ), aAppLogo );
+ if ( !bLoaded )
+ bLoaded = impl_loadBitmap(
+ rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
+ rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo );
+ }
+
+ return aAppLogo;
+}
+
AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerStr ) :
SfxModalDialog ( pParent, rId ),
@@ -145,39 +187,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerS
}
// load image from module path
- rtl::OUString aAbouts( RTL_CONSTASCII_USTRINGPARAM( ABOUT_BITMAP_STRINGLIST ) );
- bool bLoaded = false;
- sal_Int32 nIndex = 0;
- do
- {
- bLoaded = impl_loadBitmap(
- rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
- aAbouts.getToken( 0, ',', nIndex ), aAppLogo );
- }
- while ( !bLoaded && ( nIndex >= 0 ) );
-
- // fallback to "about.bmp"
- if ( !bLoaded )
- {
- bLoaded = impl_loadBitmap(
- rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ),
- rtl::OUString::createFromAscii( "about.png" ), aAppLogo );
- if ( !bLoaded )
- bLoaded = impl_loadBitmap(
- rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ),
- rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo );
- }
-
- if ( !bLoaded )
- {
- bLoaded = impl_loadBitmap(
- rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
- rtl::OUString::createFromAscii( "about.png" ), aAppLogo );
- if ( !bLoaded )
- bLoaded = impl_loadBitmap(
- rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
- rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo );
- }
+ aAppLogo = SfxApplication::GetApplicationLogo();
// Transparenter Font
Font aFont = GetFont();
diff --git a/sfx2/source/doc/Metadatable.cxx b/sfx2/source/doc/Metadatable.cxx
index b1b69e5ac74f..1a51bee5024f 100644
--- a/sfx2/source/doc/Metadatable.cxx
+++ b/sfx2/source/doc/Metadatable.cxx
@@ -33,6 +33,8 @@
#include <vos/mutex.hxx>
#include <vcl/svapp.hxx> // solarmutex
+#include <rtl/random.h>
+
#include <boost/bind.hpp>
#include <memory>
@@ -401,14 +403,16 @@ template< typename T >
/*static*/ ::rtl::OUString create_id(const
::std::hash_map< ::rtl::OUString, T, ::rtl::OUStringHash > & i_rXmlIdMap)
{
+ static rtlRandomPool s_Pool( rtl_random_createPool() );
const ::rtl::OUString prefix( ::rtl::OUString::createFromAscii(s_prefix) );
typename ::std::hash_map< ::rtl::OUString, T, ::rtl::OUStringHash >
::const_iterator iter;
::rtl::OUString id;
do
{
- const int n( rand() );
- id = prefix + ::rtl::OUString::valueOf(static_cast<sal_Int64>(n));
+ sal_Int32 n;
+ rtl_random_getBytes(s_Pool, & n, sizeof(n));
+ id = prefix + ::rtl::OUString::valueOf(static_cast<sal_Int32>(abs(n)));
iter = i_rXmlIdMap.find(id);
}
while (iter != i_rXmlIdMap.end());
@@ -1488,8 +1492,7 @@ Metadatable::RegisterAsCopyOf(Metadatable const & i_rSource,
}
}
-::boost::shared_ptr<MetadatableUndo> Metadatable::CreateUndo(
- const bool i_isDelete)
+::boost::shared_ptr<MetadatableUndo> Metadatable::CreateUndo() const
{
OSL_ENSURE(!IsInUndo(), "CreateUndo called for object in undo?");
OSL_ENSURE(!IsInClipboard(), "CreateUndo called for object in clipboard?");
@@ -1503,11 +1506,6 @@ Metadatable::RegisterAsCopyOf(Metadatable const & i_rSource,
pRegDoc->CreateUndo(*this) );
pRegDoc->RegisterCopy(*this, *pUndo, false);
pUndo->m_pReg = pRegDoc;
-
- if (i_isDelete)
- {
- RemoveMetadataReference();
- }
return pUndo;
}
}
@@ -1518,6 +1516,13 @@ Metadatable::RegisterAsCopyOf(Metadatable const & i_rSource,
return ::boost::shared_ptr<MetadatableUndo>();
}
+::boost::shared_ptr<MetadatableUndo> Metadatable::CreateUndoForDelete()
+{
+ ::boost::shared_ptr<MetadatableUndo> const pUndo( CreateUndo() );
+ RemoveMetadataReference();
+ return pUndo;
+}
+
void Metadatable::RestoreMetadata(
::boost::shared_ptr<MetadatableUndo> const& i_pUndo)
{
@@ -1624,15 +1629,16 @@ MetadatableMixin::getMetadataReference()
throw (uno::RuntimeException)
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
- Metadatable* pObject( GetCoreObject() );
- if (pObject)
- {
- return pObject->GetMetadataReference();
- }
- else
+
+ Metadatable *const pObject( GetCoreObject() );
+ if (!pObject)
{
- throw uno::RuntimeException();
+ throw uno::RuntimeException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "MetadatableMixin: cannot get core object; not inserted?")),
+ *this);
}
+ return pObject->GetMetadataReference();
}
void SAL_CALL
@@ -1641,30 +1647,32 @@ MetadatableMixin::setMetadataReference(
throw (uno::RuntimeException, lang::IllegalArgumentException)
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
- Metadatable* pObject( GetCoreObject() );
- if (pObject)
- {
- return pObject->SetMetadataReference(i_rReference);
- }
- else
+
+ Metadatable *const pObject( GetCoreObject() );
+ if (!pObject)
{
- throw uno::RuntimeException();
+ throw uno::RuntimeException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "MetadatableMixin: cannot get core object; not inserted?")),
+ *this);
}
+ return pObject->SetMetadataReference(i_rReference);
}
void SAL_CALL MetadatableMixin::ensureMetadataReference()
throw (uno::RuntimeException)
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
- Metadatable* pObject( GetCoreObject() );
- if (pObject)
- {
- return pObject->EnsureMetadataReference();
- }
- else
+
+ Metadatable *const pObject( GetCoreObject() );
+ if (!pObject)
{
- throw uno::RuntimeException();
+ throw uno::RuntimeException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "MetadatableMixin: cannot get core object; not inserted?")),
+ *this);
}
+ return pObject->EnsureMetadataReference();
}
} // namespace sfx2
diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index cbd269b41516..5b12ac5537f7 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -835,10 +835,16 @@ sal_Bool ModelData_Impl::OutputFileDialog( sal_Int8 nStoreMode,
}
::rtl::OUString aAdjustToType;
-
- // bSetStandardName == true means that user agreed to store document in the default (default default ;-)) format
- if ( !(( nStoreMode & EXPORT_REQUESTED ) && !( nStoreMode & WIDEEXPORT_REQUESTED )) &&
- ( bSetStandardName || GetStorable()->hasLocation() ))
+ if ( ( nStoreMode & EXPORT_REQUESTED ) && !( nStoreMode & WIDEEXPORT_REQUESTED ))
+ {
+ // it is export, set the preselected filter
+ ::rtl::OUString aFilterUIName = aPreselectedFilterPropsHM.getUnpackedValueOrDefault(
+ ::rtl::OUString::createFromAscii( "UIName" ),
+ ::rtl::OUString() );
+ pFileDlg->SetCurrentFilter( aFilterUIName );
+ }
+ // it is no export, bSetStandardName == true means that user agreed to store document in the default (default default ;-)) format
+ else if ( bSetStandardName || GetStorable()->hasLocation() )
{
uno::Sequence< beans::PropertyValue > aOldFilterProps;
::rtl::OUString aOldFilterName = GetDocProps().getUnpackedValueOrDefault(
@@ -1238,6 +1244,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >&
// parse the slot name
sal_Int8 nStoreMode = getStoreModeFromSlotName( aSlotName );
+ sal_Int8 nStatusSave = STATUS_NO_ACTION;
// handle the special cases
if ( nStoreMode & SAVEAS_REQUESTED )
@@ -1259,7 +1266,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >&
else if ( nStoreMode & SAVE_REQUESTED )
{
// if saving is not acceptable by the configuration the warning must be shown
- sal_Int8 nStatusSave = aModelData.CheckSaveAcceptable( STATUS_SAVE );
+ nStatusSave = aModelData.CheckSaveAcceptable( STATUS_SAVE );
if ( nStatusSave == STATUS_NO_ACTION )
throw task::ErrorCodeIOException( ::rtl::OUString(), uno::Reference< uno::XInterface >(), ERRCODE_IO_ABORT );
@@ -1273,32 +1280,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >&
{
throw task::ErrorCodeIOException( ::rtl::OUString(), uno::Reference< uno::XInterface >(), ERRCODE_IO_ABORT );
}
- else if ( nStatusSave == STATUS_SAVE )
- {
- // Document properties can contain streams that should be freed before storing
- aModelData.FreeDocumentProps();
-
- if ( aModelData.GetStorable2().is() )
- {
- try
- {
- aModelData.GetStorable2()->storeSelf( aModelData.GetMediaDescr().getAsConstPropertyValueList() );
- }
- catch( lang::IllegalArgumentException& )
- {
- OSL_ENSURE( sal_False, "ModelData didn't handle illegal parameters, all the parameters are ignored!\n" );
- aModelData.GetStorable()->store();
- }
- }
- else
- {
- OSL_ENSURE( sal_False, "XStorable2 is not supported by the model!\n" );
- aModelData.GetStorable()->store();
- }
-
- return sal_False;
- }
- else
+ else if ( nStatusSave != STATUS_SAVE )
{
// this should be a usual SaveAs operation
nStoreMode = SAVEAS_REQUESTED;
@@ -1325,6 +1307,32 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >&
}
}
+ if ( nStoreMode & SAVE_REQUESTED && nStatusSave == STATUS_SAVE )
+ {
+ // Document properties can contain streams that should be freed before storing
+ aModelData.FreeDocumentProps();
+
+ if ( aModelData.GetStorable2().is() )
+ {
+ try
+ {
+ aModelData.GetStorable2()->storeSelf( aModelData.GetMediaDescr().getAsConstPropertyValueList() );
+ }
+ catch( lang::IllegalArgumentException& )
+ {
+ OSL_ENSURE( sal_False, "ModelData didn't handle illegal parameters, all the parameters are ignored!\n" );
+ aModelData.GetStorable()->store();
+ }
+ }
+ else
+ {
+ OSL_ENSURE( sal_False, "XStorable2 is not supported by the model!\n" );
+ aModelData.GetStorable()->store();
+ }
+
+ return sal_False;
+ }
+
// preselect a filter for the storing process
uno::Sequence< beans::PropertyValue > aFilterProps = aModelData.GetPreselectedFilter_Impl( nStoreMode );
@@ -1419,13 +1427,13 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >&
::rtl::OUString aSelFilterName = aModelData.GetMediaDescr().getUnpackedValueOrDefault(
aFilterNameString,
::rtl::OUString() );
- sal_Int8 nStatusSave = aModelData.CheckFilter( aSelFilterName );
- if ( nStatusSave == STATUS_SAVEAS_STANDARDNAME )
+ sal_Int8 nStatusFilterSave = aModelData.CheckFilter( aSelFilterName );
+ if ( nStatusFilterSave == STATUS_SAVEAS_STANDARDNAME )
{
// switch to best filter
bSetStandardName = sal_True;
}
- else if ( nStatusSave == STATUS_SAVE )
+ else if ( nStatusFilterSave == STATUS_SAVE )
{
// user confirmed alien filter or "good" filter is used
bExit = sal_True;
@@ -1570,8 +1578,10 @@ uno::Sequence< beans::PropertyValue > SfxStoringHelper::SearchForFilter(
uno::Reference< container::XEnumeration > xFilterEnum =
xFilterQuery->createSubSetEnumerationByProperties( aSearchRequest );
- // use the first filter that is found
+ // the first default filter will be taken,
+ // if there is no filter with flag default the first acceptable filter will be taken
if ( xFilterEnum.is() )
+ {
while ( xFilterEnum->hasMoreElements() )
{
uno::Sequence< beans::PropertyValue > aProps;
@@ -1582,11 +1592,17 @@ uno::Sequence< beans::PropertyValue > SfxStoringHelper::SearchForFilter(
(sal_Int32)0 );
if ( ( ( nFlags & nMustFlags ) == nMustFlags ) && !( nFlags & nDontFlags ) )
{
- aFilterProps = aProps;
- break;
+ if ( ( nFlags & SFX_FILTER_DEFAULT ) == SFX_FILTER_DEFAULT )
+ {
+ aFilterProps = aProps;
+ break;
+ }
+ else if ( !aFilterProps.getLength() )
+ aFilterProps = aProps;
}
}
}
+ }
return aFilterProps;
}
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index 7d931cb6c640..628c3b020c08 100644..100755
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -1681,7 +1681,7 @@ namespace
}
ErrCode SfxObjectShell::CallXScript( const Reference< XInterface >& _rxScriptContext, const ::rtl::OUString& _rScriptURL,
- const Sequence< Any >& aParams, Any& aRet, Sequence< sal_Int16 >& aOutParamIndex, Sequence< Any >& aOutParam )
+ const Sequence< Any >& aParams, Any& aRet, Sequence< sal_Int16 >& aOutParamIndex, Sequence< Any >& aOutParam, bool bRaiseError )
{
OSL_TRACE( "in CallXScript" );
ErrCode nErr = ERRCODE_NONE;
@@ -1722,7 +1722,7 @@ ErrCode SfxObjectShell::CallXScript( const Reference< XInterface >& _rxScriptCon
nErr = ERRCODE_BASIC_INTERNAL_ERROR;
}
- if ( bCaughtException )
+ if ( bCaughtException && bRaiseError )
{
::std::auto_ptr< VclAbstractDialog > pScriptErrDlg;
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
@@ -1745,10 +1745,10 @@ ErrCode SfxObjectShell::CallXScript( const String& rScriptURL,
aParams,
::com::sun::star::uno::Any& aRet,
::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex,
- ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >&
- aOutParam)
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam
+ , bool bRaiseError )
{
- return CallXScript( GetModel(), rScriptURL, aParams, aRet, aOutParamIndex, aOutParam );
+ return CallXScript( GetModel(), rScriptURL, aParams, aRet, aOutParamIndex, aOutParam, bRaiseError );
}
//-------------------------------------------------------------------------
diff --git a/shell/source/backends/gconfbe/gconfaccess.cxx b/shell/source/backends/gconfbe/gconfaccess.cxx
index 99a5b362c161..64d0e2e94eae 100644
--- a/shell/source/backends/gconfbe/gconfaccess.cxx
+++ b/shell/source/backends/gconfbe/gconfaccess.cxx
@@ -448,7 +448,6 @@ sal_Bool SAL_CALL isDependencySatisfied( GConfClient* aClient, const Configurati
#ifdef ENABLE_LOCKDOWN
case SETTING_AUTO_SAVE:
{
- GConfClient* aClient = GconfBackend::getGconfClient();
GConfValue* aGconfValue = gconf_client_get( aClient, GCONF_AUTO_SAVE_KEY, NULL );
if( ( aGconfValue != NULL ) )
diff --git a/shell/source/win32/shlxthandler/makefile.mk b/shell/source/win32/shlxthandler/makefile.mk
index 4452cb1a90e6..b6c9a45a9515 100644
--- a/shell/source/win32/shlxthandler/makefile.mk
+++ b/shell/source/win32/shlxthandler/makefile.mk
@@ -34,6 +34,9 @@ USE_DEFFILE=TRUE
.IF "$(BUILD_X64)"!=""
USE_DEFFILE_X64=TRUE
.ENDIF
+NO_DEFAULT_STL=TRUE
+USE_STLP_DEBUG=
+
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
@@ -134,10 +137,6 @@ SHL1STDLIBS_X64+=\
$(OLDNAMESLIB_X64) \
msvcprt.lib
-.IF "$(PRODUCT)"!="full"
-SHL1STDLIBS+=msvcrt.lib
-.ENDIF
-
SHL1LIBS_X64+=$(SLB_X64)$/util.lib\
$(SLB_X64)$/ooofilereader.lib
SHL1OBJS_X64=$(SLOFILES_X64)
diff --git a/smoketestoo_native/makefile.mk b/smoketestoo_native/makefile.mk
index 8b497ddb4727..0337c748d914 100644
--- a/smoketestoo_native/makefile.mk
+++ b/smoketestoo_native/makefile.mk
@@ -55,13 +55,13 @@ $(BIN)/smoketestdoc.sxw: data/smoketestdoc.sxw
$(COPY) $< $@
.IF "$(OS)" != "WNT"
-$(installationtest_instpath).flag : \
- $(shell ls $(installationtest_instset)/OOo_*_install_*.tar.gz)
+$(installationtest_instpath).flag : $(shell ls \
+ $(installationtest_instset)/OOo_*_install-arc_$(defaultlangiso).tar.gz)
$(RM) -r $(installationtest_instpath)
$(MKDIRHIER) $(installationtest_instpath)
- cd $(installationtest_instpath) && \
- $(GNUTAR) xfz $(installationtest_instset)/OOo_*_install_*.tar.gz
- $(MV) $(installationtest_instpath)/OOo_*_install_* \
+ cd $(installationtest_instpath) && $(GNUTAR) xfz \
+ $(installationtest_instset)/OOo_*_install-arc_$(defaultlangiso).tar.gz
+ $(MV) $(installationtest_instpath)/OOo_*_install-arc_$(defaultlangiso) \
$(installationtest_instpath)/opt
$(TOUCH) $@
cpptest : $(installationtest_instpath).flag
diff --git a/solenv/bin/cws.pl b/solenv/bin/cws.pl
index f3abc0a7a320..f24db23897af 100644
--- a/solenv/bin/cws.pl
+++ b/solenv/bin/cws.pl
@@ -2206,6 +2206,7 @@ sub do_fetch
my $ooo_svn_server = $config->get_ooo_svn_server();
my $so_svn_server = $config->get_so_svn_server();
my $prebuild_dir = $config->get_prebuild_binaries_location();
+ my $external_tarball_source = $prebuild_dir;
# Check early for platforms so we can bail out before anything time consuming is done
# in case of a missing platform
my @platforms;
@@ -2368,10 +2369,10 @@ sub do_fetch
}
}
- if ( !$onlysolver ) {
+ if ( !$onlysolver && defined($external_tarball_source) ) {
my $source_root_dir = "$workspace/$masterws";
- my $external_tarball_source = "$prebuild_dir/$masterws/ext_sources";
- if ( -e "$source_root_dir/ooo/ooo.lst" && defined($prebuild_dir) && -d $external_tarball_source ) {
+ $external_tarball_source .= "/$masterws/ext_sources";
+ if ( -e "$source_root_dir/ooo/ooo.lst" && -d $external_tarball_source ) {
fetch_external_tarballs($source_root_dir, $external_tarball_source);
}
}
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 143f60d986db..197f985bbf83 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -1348,6 +1348,9 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
# Debian allows no underline in package name
if ( $installer::globals::debian ) { $packagename =~ s/_/-/g; }
+ # Debian allows no underline in package name
+ if ( $installer::globals::debian ) { $packagename =~ s/_/-/g; }
+
my $linkaddon = "";
my $linkpackage = 0;
$installer::globals::add_required_package = "";
@@ -2126,17 +2129,19 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
# include the license text into the table Control.idt
- # my $licensefilesource = installer::windows::idtglobal::get_licensefilesource($onelanguage, $filesinproductlanguageresolvedarrayref);
- my $licensefilesource = installer::windows::idtglobal::get_rtflicensefilesource($onelanguage, $includepatharrayref_lang);
- my $licensefile = installer::files::read_file($licensefilesource);
- installer::scpzipfiles::replace_all_ziplistvariables_in_rtffile($licensefile, $allvariablesarrayref, $onelanguage, $loggingdir);
- my $controltablename = $languageidtdir . $installer::globals::separator . "Control.idt";
- my $controltable = installer::files::read_file($controltablename);
- installer::windows::idtglobal::add_licensefile_to_database($licensefile, $controltable);
- installer::files::save_file($controltablename, $controltable);
-
- $infoline = "Added licensefile $licensefilesource into database $controltablename\n";
- push(@installer::globals::logfileinfo, $infoline);
+ if ( ! $allvariableshashref->{'HIDELICENSEDIALOG'} )
+ {
+ my $licensefilesource = installer::windows::idtglobal::get_rtflicensefilesource($onelanguage, $includepatharrayref_lang);
+ my $licensefile = installer::files::read_file($licensefilesource);
+ installer::scpzipfiles::replace_all_ziplistvariables_in_rtffile($licensefile, $allvariablesarrayref, $onelanguage, $loggingdir);
+ my $controltablename = $languageidtdir . $installer::globals::separator . "Control.idt";
+ my $controltable = installer::files::read_file($controltablename);
+ installer::windows::idtglobal::add_licensefile_to_database($licensefile, $controltable);
+ installer::files::save_file($controltablename, $controltable);
+
+ $infoline = "Added licensefile $licensefilesource into database $controltablename\n";
+ push(@installer::globals::logfileinfo, $infoline);
+ }
# include office directory in CustomAction table
diff --git a/solenv/bin/mhids.pl b/solenv/bin/mhids.pl
index f2d0acc649f6..a1229c398551 100644
--- a/solenv/bin/mhids.pl
+++ b/solenv/bin/mhids.pl
@@ -155,7 +155,9 @@ $filebase =~ s/\..*?$//;
# now stript it to something that doesn't togger vista execution prevention :(
$flbs = $filebase;
$flbs =~ s/[aeiou]//g;
-$workfile = "$tmpdir/${flbs}_".$$;
+# call srand ony once per script!
+srand();
+$workfile = "$tmpdir/${flbs}_".$$.rand();
#$workfile =~ s/setup/set_up/;
# now get $workfile ready for shell usage...
@@ -171,7 +173,7 @@ unlink "$workfile.obj";
if ( -f "$workfile.hid" )
{
- unlink "$workfile.hid" or die "ERRROR - cannot remove $workfile.hid\n";;
+ unlink "$workfile.hid" or die "ERRROR - cannot remove $workfile.hid\n";
}
# hack to quit for files which cannot be handled
diff --git a/solenv/bin/modules/CreatePDBRelocators.pm b/solenv/bin/modules/CreatePDBRelocators.pm
index 8f272fe896f8..c6e4f81a660f 100644
--- a/solenv/bin/modules/CreatePDBRelocators.pm
+++ b/solenv/bin/modules/CreatePDBRelocators.pm
@@ -106,8 +106,8 @@ sub create_pdb_relocators
}
# collect files
- my @pdb_files;
foreach my $repository (@{$self->{REPOSITORIES}}) {
+ my @pdb_files;
my $o = $self->{SOLARVERSION} . "/$repository";
$repository =~ s/(.*?)\.(.*)/$1/;
$self->collect_files( $o, $inpath, \@pdb_files);
diff --git a/solenv/bin/modules/installer/archivefiles.pm b/solenv/bin/modules/installer/archivefiles.pm
index 80c468b61db2..4a9586c9fdd4 100644
--- a/solenv/bin/modules/installer/archivefiles.pm
+++ b/solenv/bin/modules/installer/archivefiles.pm
@@ -50,18 +50,26 @@ sub put_language_into_name
my $filename = "";
my $extension = "";
- if ( $oldname =~ /^\s*(.*)(\..*?)\s*$/ ) # files with extension
+ if ( $oldname =~ /en-US/ ) # files, that contain the language in the file name
{
- $filename = $1;
- $extension = $2;
+ $newname = $oldname;
+ $newname =~ s/en-US/$onelanguage/;
}
- else
+ else # files, that do not contain the language in the file name
{
- $filename = $oldname;
- $extension = "";
- }
+ if ( $oldname =~ /^\s*(.*)(\..*?)\s*$/ ) # files with extension
+ {
+ $filename = $1;
+ $extension = $2;
+ }
+ else
+ {
+ $filename = $oldname;
+ $extension = "";
+ }
- $newname = $1 . "_" . $onelanguage . $2;
+ $newname = $1 . "_" . $onelanguage . $2;
+ }
return $newname;
}
diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm
index f98770a15790..34f228c791f7 100644
--- a/solenv/bin/modules/installer/download.pm
+++ b/solenv/bin/modules/installer/download.pm
@@ -653,10 +653,6 @@ sub get_install_type
my $type = "";
- my $cwsproduct = 0;
- # the environment variable CWS_WORK_STAMP is set only in CWS
- if ( $ENV{'CWS_WORK_STAMP'} ) { $cwsproduct = 1; }
-
if ( $installer::globals::languagepack )
{
$type = "langpack";
@@ -671,7 +667,7 @@ sub get_install_type
$type = $type . "-deb";
}
- if (( $installer::globals::packageformat eq "archive" ) && ( $cwsproduct ))
+ if ( $installer::globals::packageformat eq "archive" )
{
$type = $type . "-arc";
}
@@ -690,7 +686,7 @@ sub get_install_type
$type = $type . "-deb";
}
- if (( $installer::globals::packageformat eq "archive" ) && ( $cwsproduct ))
+ if ( $installer::globals::packageformat eq "archive" )
{
$type = $type . "-arc";
}
diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm
index ffe79136b57e..136eca913dd9 100644
--- a/solenv/bin/modules/installer/epmfile.pm
+++ b/solenv/bin/modules/installer/epmfile.pm
@@ -426,6 +426,17 @@ sub create_epm_header
}
}
+ # Process for Linux packages, in which only a very basic license file is
+ # included into the package.
+
+ if ( $installer::globals::islinuxbuild )
+ {
+ if ( $variableshashref->{'COPYRIGHT_INTO_LINUXPACKAGE'} )
+ {
+ $licensefilename = "linuxcopyrightfile";
+ $license_in_package_defined = 1;
+ }
+ }
# searching for and readme file
for ( my $i = 0; $i <= $#{$filesinproduct}; $i++ )
@@ -447,7 +458,7 @@ sub create_epm_header
{
my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$licensefilename, "" , 0);
- if ( $$fileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find license file $licensefilename!", "create_epm_header"); }
+ if ( $$fileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find license file $licensefilename (A)!", "create_epm_header"); }
# Special handling to add the content of the file "license_en-US" to the solaris copyrightfile. But not for all products
@@ -500,12 +511,12 @@ sub create_epm_header
if (!($foundlicensefile))
{
- installer::exiter::exit_program("ERROR: Could not find license file $licensefilename", "create_epm_header");
+ installer::exiter::exit_program("ERROR: Could not find license file $licensefilename (B)", "create_epm_header");
}
if (!($foundreadmefile))
{
- installer::exiter::exit_program("ERROR: Could not find readme file $readmefilename", "create_epm_header");
+ installer::exiter::exit_program("ERROR: Could not find readme file $readmefilename (C)", "create_epm_header");
}
# including %replaces
@@ -1436,6 +1447,8 @@ sub set_autoprovreq_in_specfile
$autoreqprovline = "AutoReqProv\: no\n";
}
+ $autoreqprovline .= "%define _binary_filedigest_algorithm 1\n%define _binary_payload w9.gzdio\n";
+
for ( my $i = 0; $i <= $#{$changefile}; $i++ )
{
# Adding "autoreqprov" behind the line beginning with: Group:
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 72ab0215dbcf..564df06e79e2 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -78,6 +78,7 @@ BEGIN
"dgo",
"kok",
"mni",
+ "ca-XV",
"sat",
"ug",
"om",
diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm
index 778ca23e740a..ecda4f9a4e0b 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -1507,6 +1507,20 @@ sub add_License_Files_into_Installdir
$newfile->{'specificlanguage'} = "";
$newfile->{'haslanguagemodule'} = "0";
+ if ( defined $newfile->{'InstallName'} )
+ {
+ if ( $newfile->{'InstallName'} =~ /^\s*(.*?)_$defaultlanguage\.?(\w*?)\s*$/ )
+ {
+ my $localfilename = $1;
+ my $localextension = $2;
+
+ if ( $localextension eq "" ) { $newfile->{'InstallName'} = $localfilename; }
+ else { $newfile->{'InstallName'} = $localfilename . "\." . $localextension; }
+ }
+ }
+
+ $newfile->{'removelangfromfile'} = "1"; # Important for files with an InstallName, because language also has to be removed there.
+
if ( $foundofficedir )
{
$newfile->{'Dir'} = $officedirectorygid;
@@ -1529,6 +1543,12 @@ sub add_License_Files_into_Installdir
$infoline = "New files: Adding file $newfilename for the installation root to the file list. Language: $defaultlanguage\n";
push( @installer::globals::logfileinfo, $infoline);
+ if ( defined $newfile->{'InstallName'} )
+ {
+ $infoline = "New files: Using installation name: $newfile->{'InstallName'}\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
+
# Collecting license and readme file for the installation set
push(@installer::globals::installsetfiles, $newfile);
diff --git a/solenv/bin/modules/installer/setupscript.pm b/solenv/bin/modules/installer/setupscript.pm
index 9da5340f915f..a3bf5abf50a9 100644
--- a/solenv/bin/modules/installer/setupscript.pm
+++ b/solenv/bin/modules/installer/setupscript.pm
@@ -155,6 +155,12 @@ sub add_lowercase_productname_setupscriptvariable
$newline = "\%LCONEWORDPRODUCTNAME " . lc($value) . "\n";
push(@{$variablesref} ,$newline);
$value = $original;
+ $value =~ s/\s*$//g;
+ $value =~ s/^\s*//g;
+ $value =~ s/ /\%20/g;
+ $newline = "\%MASKEDPRODUCTNAME " . $value . "\n";
+ push(@{$variablesref} ,$newline);
+ $value = $original;
$value =~ s/\s/\_/g;
# if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
$newline = "\%UNIXPRODUCTNAME " . lc($value) . "\n";
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index 9666ef3e1af5..08f6eacf9e24 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -407,7 +407,12 @@ sub create_package
}
my $sla = 'sla.r';
- my $ref = installer::scriptitems::get_sourcepath_from_filename_and_includepath( \$sla, $includepatharrayref, 0);
+ my $ref = "";
+
+ if ( ! $allvariables->{'HIDELICENSEDIALOG'} )
+ {
+ installer::scriptitems::get_sourcepath_from_filename_and_includepath( \$sla, $includepatharrayref, 0);
+ }
my $localtempdir = $tempdir;
@@ -518,7 +523,7 @@ sub create_package
}
$systemcall = "cd $localtempdir && hdiutil makehybrid -hfs -hfs-openfolder $folder $folder -hfs-volume-name \"$volume_name\" -ov -o $installdir/tmp && hdiutil convert -ov -format UDZO $installdir/tmp.dmg -o $archive && ";
- if ($$ref ne "") {
+ if (( $ref ne "" ) && ( $$ref ne "" )) {
$systemcall .= "hdiutil unflatten $archive && Rez -a $$ref -o $archive && hdiutil flatten $archive &&";
}
$systemcall .= "rm -f $installdir/tmp.dmg";
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index 6f03228ca10a..b82f5175250b 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -769,9 +769,13 @@ sub prepare_language_idt_directory
installer::systemactions::create_directory($destinationdir . $installer::globals::separator . "Binary");
installer::systemactions::copy_directory($installer::globals::idttemplatepath . $installer::globals::separator . "Binary", $destinationdir . $installer::globals::separator . "Binary");
- if (( $installer::globals::patch ) && ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} ))
+ if ((( $installer::globals::patch ) && ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} )) || ( $allvariables->{'WINDOWSBITMAPDIRECTORY'} ))
{
- my $newsourcedir = $installer::globals::unpackpath . $installer::globals::separator . $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'}; # path setting in list file dependent from unpackpath !?
+ my $bitmapdir = "";
+ if ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} ) { $bitmapdir = $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'}; }
+ if ( $allvariables->{'WINDOWSBITMAPDIRECTORY'} ) { $bitmapdir = $allvariables->{'WINDOWSBITMAPDIRECTORY'}; }
+
+ my $newsourcedir = $installer::globals::unpackpath . $installer::globals::separator . $bitmapdir; # path setting in list file dependent from unpackpath !?
$infoline = "\nOverwriting files in directory \"" . $destinationdir . $installer::globals::separator . "Binary" . "\" with files from directory \"" . $newsourcedir . "\".\n";
push( @installer::globals::logfileinfo, $infoline);
if ( ! -d $newsourcedir )
diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm
index 7b890d06d58f..2ef083178122 100644
--- a/solenv/bin/modules/installer/windows/property.pm
+++ b/solenv/bin/modules/installer/windows/property.pm
@@ -393,7 +393,23 @@ sub set_important_properties
if ( $allvariables->{'HIDELICENSEDIALOG'} )
{
my $onepropertyline = "HIDEEULA" . "\t" . "1" . "\n";
- push(@{$propertyfile}, $onepropertyline);
+
+ my $already_defined = 0;
+
+ for ( my $i = 0; $i <= $#{$propertyfile}; $i++ )
+ {
+ if ( ${$propertyfile}[$i] =~ /^\s*HIDEEULA\t/ )
+ {
+ ${$propertyfile}[$i] = $onepropertyline;
+ $already_defined = 1;
+ last;
+ }
+ }
+
+ if ( ! $already_defined )
+ {
+ push(@{$propertyfile}, $onepropertyline);
+ }
}
# Setting .NET requirements
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index ff1d172c9b8f..6cc3c1e3f5db 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -491,6 +491,12 @@ sub analyze_and_save_logfile
if ( $installer::globals::creating_windows_installer_patch ) { $installer::globals::creating_windows_installer_patch = 0; }
+ # Exiting the packaging process, if an error occured.
+ # This is important, to get an error code "-1", if an error was found in the log file,
+ # that did not break the packaging process
+
+ if ( ! $is_success) { installer::exiter::exit_program("ERROR: Found an error in the logfile. Packaging failed.", "analyze_and_save_logfile"); }
+
return ($is_success, $finalinstalldir);
}
@@ -3132,7 +3138,8 @@ sub put_license_into_setup
# find and read english license file
my $licenselanguage = "en-US"; # always english !
- my $licensefilename = "LICENSE_" . $licenselanguage;
+ # my $licensefilename = "LICENSE_" . $licenselanguage;
+ my $licensefilename = "license_" . $licenselanguage . ".txt";
my $licenseincludepatharrayref = get_language_specific_include_pathes($includepatharrayref, $licenselanguage);
my $licenseref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$licensefilename, $licenseincludepatharrayref, 0);
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index 00de1709473b..09b7718e2992 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -659,7 +659,7 @@ sub set_manufacturer
if (( $allvariables->{'DEFINEDMANUFACTURER'} ) && ( $allvariables->{'DEFINEDMANUFACTURER'} ne "" )) { $sunname = $allvariables->{'DEFINEDMANUFACTURER'}; }
else { installer::exiter::exit_program("ERROR: Property DEFINEDMANUFACTURER has to be set for this product!", "set_manufacturer"); }
$installer::globals::manufacturer = $sunname;
- $installer::globals::longmanufacturer = $sunname . ", Inc.";
+ $installer::globals::longmanufacturer = $sunname;
}
$allvariables->{'MANUFACTURER'} = $installer::globals::manufacturer;
@@ -742,6 +742,11 @@ sub replace_variables_in_ziplist_variables
my $localminor = $installer::globals::lastminor;
if ( $installer::globals::minor ) { $localminor = $installer::globals::minor; }
+ my $buildidstringcws = $installer::globals::build . $localminor . "(Build:" . $installer::globals::buildid . ")";
+
+ # the environment variable CWS_WORK_STAMP is set only in CWS
+ if ( $ENV{'CWS_WORK_STAMP'} ) { $buildidstringcws = $buildidstringcws . "\[CWS\:" . $ENV{'CWS_WORK_STAMP'} . "\]"; }
+
for ( my $i = 0; $i <= $#{$blockref}; $i++ )
{
if ($installer::globals::lastminor) { ${$blockref}[$i] =~ s/\{milestone\}/$milestonevariable/; }
@@ -752,6 +757,7 @@ sub replace_variables_in_ziplist_variables
else { ${$blockref}[$i] =~ s/\{buildid\}//; }
if ( $installer::globals::build ) { ${$blockref}[$i] =~ s/\{buildsource\}/$installer::globals::build/; }
else { ${$blockref}[$i] =~ s/\{build\}//; }
+ ${$blockref}[$i] =~ s/\{buildidcws\}/$buildidstringcws/;
}
}
diff --git a/solenv/bin/packregistry.xslt b/solenv/bin/packregistry.xslt
index 55558d55450c..76b4c5eeffe8 100644
--- a/solenv/bin/packregistry.xslt
+++ b/solenv/bin/packregistry.xslt
@@ -29,7 +29,8 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oor="http://openoffice.org/2001/registry">
<xsl:strip-space elements="*"/>
- <xsl:preserve-space elements="value"/>
+ <xsl:preserve-space elements="value it"/>
+ <!-- TODO: strip space from "value" elements that have "it" children -->
<xsl:template match="/">
<oor:data xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -63,19 +64,25 @@
</xsl:template>
<xsl:template
match="oor:component-schema|oor:component-data|templates|component|group|
- set|node-ref|prop|item|value|node">
+ set|node-ref|prop|item|value|it|unicode|node">
<xsl:copy copy-namespaces="no">
<!-- prune oor:component-data xmlns:install="..." namespaces (would only
work in XSLT 2.0, however) -->
- <xsl:for-each select="@*">
- <xsl:attribute name="{name()}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:for-each>
+ <xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
+ <xsl:template match="value[it]">
+ <xsl:copy copy-namespaces="no">
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates select="*"/>
+ <!-- ignore text elements (which must be whitespace only) -->
+ </xsl:copy>
+ </xsl:template>
<xsl:template match="info|import|uses|constraints"/>
<!-- TODO: no longer strip elements when they are eventually read by
configmgr implementation -->
+ <xsl:template match="@*">
+ <xsl:copy/>
+ </xsl:template>
</xsl:stylesheet>
diff --git a/solenv/config/sdev300.ini b/solenv/config/sdev300.ini
index 878ae45c99f0..d4a90f7d1d3c 100644
--- a/solenv/config/sdev300.ini
+++ b/solenv/config/sdev300.ini
@@ -2954,7 +2954,7 @@ wntmsci12
MKOUT %PERL% %SOLARENV%$/bin$/mkout.pl
MWSCOMMIT %PERL% %COMMON_ENV_TOOLS%$/mwscommit.pl
OJDK16PATH %SOLAR_OJDK16PATH%
- PATH $cp(%PSDK%$/bin)$:%PATH%$:$cp(%SHARED_COM_SDK_PATH%)$:$cp(%COMPATH%$/bin)$:$cp(%FSDK%)$:$cp(%F20SDK%)$/bin$:$cp(%DSDK%$/Utilities$/bin$/x86)$:$cp(%PACKMS%)
+ PATH $cp(%PSDK%$/Bin)$:%PATH%$:$cp(%SHARED_COM_SDK_PATH%)$:$cp(%COMPATH%$/bin)$:$cp(%FSDK%)$:$cp(%F20SDK%)$/bin$:$cp(%DSDK%$/Utilities$/bin$/x86)$:$cp(%PACKMS%)
PROF_EDITION TRUE
PSDKINC -I%PSDK%$/include
SOLAREXTRAINC -I%DSDK%$/include
@@ -3296,7 +3296,7 @@ wntmsci13
MKOUT %PERL% %SOLARENV%$/bin$/mkout.pl
MWSCOMMIT %PERL% %COMMON_ENV_TOOLS%$/mwscommit.pl
OJDK16PATH %SOLAR_OJDK16PATH%
- PATH $cp(%PSDK%$/bin)$:%PATH%$:$cp(%SHARED_COM_SDK_PATH%)$:$cp(%COMPATH%$/bin)$:$cp(%FSDK%)$:$cp(%F20SDK%)$/bin$:$cp(%DSDK%$/Utilities$/bin$/x86)$:$cp(%PACKMS%)
+ PATH $cp(%PSDK%$/Bin)$:%PATH%$:$cp(%SHARED_COM_SDK_PATH%)$:$cp(%COMPATH%$/bin)$:$cp(%FSDK%)$:$cp(%F20SDK%)$/bin$:$cp(%DSDK%$/Utilities$/bin$/x86)$:$cp(%PACKMS%)
PROF_EDITION TRUE
PSDKINC -I%PSDK%$/include
SOLAREXTRAINC -I%DSDK%$/include
diff --git a/solenv/inc/installationtest.mk b/solenv/inc/installationtest.mk
index 5e16759592cd..e13015d182ac 100644
--- a/solenv/inc/installationtest.mk
+++ b/solenv/inc/installationtest.mk
@@ -72,12 +72,12 @@ my_javaenv = \
# smoketestoo_native:
.IF "$(OS)" == "WNT"
$(MISC)/$(TARGET)/installation.flag : $(shell \
- ls $(installationtest_instset)/OOo_*_install_$(defaultlangiso).zip)
+ ls $(installationtest_instset)/OOo_*_install-arc_$(defaultlangiso).zip)
$(MKDIRHIER) $(@:d)
my_tmp=$$(cygpath -m $$(mktemp -dt ooosmoke.XXXXXX)) && \
- unzip $(installationtest_instset)/OOo_*_install_$(defaultlangiso).zip \
+ unzip $(installationtest_instset)/OOo_*_install-arc_$(defaultlangiso).zip \
-d "$$my_tmp" && \
- mv "$$my_tmp"/OOo_*_install_$(defaultlangiso) "$$my_tmp"/opt && \
+ mv "$$my_tmp"/OOo_*_install-arc_$(defaultlangiso) "$$my_tmp"/opt && \
echo "$$my_tmp" > $@
.END
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index b835f526997f..09b4169048a6 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -182,7 +182,9 @@ SAXLIB=-lsax$(DLLPOSTFIX)
MAILLIB=-lmail
DOCMGRLIB=-ldmg$(DLLPOSTFIX)
BASICLIB=-lsb$(DLLPOSTFIX)
+.IF "$(ENABLE_VBA)"=="YES"
VBAHELPERLIB=-lvbahelper$(DLLPOSTFIX)
+.ENDIF
DBTOOLSLIB=-ldbtools$(DLLPOSTFIX)
HM2LIBSH=-lhmwrpdll
HM2LIBST=-lhmwrap
diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk
index f6920b285050..ec992a075900 100644
--- a/solenv/inc/minor.mk
+++ b/solenv/inc/minor.mk
@@ -1,5 +1,5 @@
RSCVERSION=300
-RSCREVISION=300m77(Build:9496)
-BUILD=9496
-LAST_MINOR=m77
+RSCREVISION=300m78(Build:9501)
+BUILD=9501
+LAST_MINOR=m78
SOURCEVERSION=DEV300
diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk
index 495720f9d038..d2fcafa3fe13 100644
--- a/solenv/inc/settings.mk
+++ b/solenv/inc/settings.mk
@@ -480,7 +480,7 @@ DBG_LEVEL*=0
optimize!=true
dbgutil!=true
DBG_LEVEL*=1
-USE_STLP_DEBUG=TRUE
+USE_STLP_DEBUG*=TRUE
.ENDIF
.IF "$(debug)"!=""
diff --git a/solenv/inc/tg_config.mk b/solenv/inc/tg_config.mk
index 2f1b9fedde80..bbc720ed600e 100644
--- a/solenv/inc/tg_config.mk
+++ b/solenv/inc/tg_config.mk
@@ -120,10 +120,12 @@ $(PROCESSOUT)/registry/data/$(PACKAGEDIR)/%.xcu : %.xcu
$(COMMAND_ECHO)$(XSLTPROC) --nonet -o $(normpath $(subst,$(PATH_IN_MODULE), $(PWD))/$(subst,$(PRJ), $(@:d))$*.val) \
--stringparam xcs $(XCSROOTURL)/registry/schema/$(XSLTPACKAGEDIR)/$*.xcs \
--stringparam schemaRoot $(XCSROOTURL)/registry/schema \
+ --path $(DTDDIR)/registry \
$(SYSXSLDIR)data_val.xsl $<
$(COMMAND_ECHO)$(XSLTPROC) --nonet -o $(normpath $(subst,$(PATH_IN_MODULE), $(PWD))/$(subst,$(PRJ), $@)) \
--stringparam xcs $(XCSROOTURL)/registry/schema/$(XSLTPACKAGEDIR)/$*.xcs \
--stringparam schemaRoot $(XCSROOTURL)/registry/schema \
+ --path $(DTDDIR)/registry \
$(SYSXSLDIR)alllang.xsl $<
@+-$(RM) $(@:d)$*.val > $(NULLDEV)
@@ -154,6 +156,7 @@ $(PROCESSOUT)/registry/res/{$(alllangiso)}/$(PACKAGEDIR)/%.xcu :| %.xcu
--stringparam xcs $(XCSROOTURL)/registry/schema/$(XSLTPACKAGEDIR)/$*.xcs \
--stringparam schemaRoot $(XCSROOTURL)/registry/schema \
--stringparam locale {$(subst,/$(PACKAGEDIR)/$(@:f), $(subst,$(PROCESSOUT)/registry/res/, $@))} \
+ --path $(DTDDIR)/registry \
$(SYSXSLDIR)alllang.xsl $<
# --- languagepack tag modules ---
diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk
index eb27b51a6e6d..a05b4629755e 100644
--- a/solenv/inc/unx.mk
+++ b/solenv/inc/unx.mk
@@ -167,6 +167,10 @@
.INCLUDE : unxlnghppa.mk
.ENDIF
+.IF "$(COM)$(OS)$(CPU)" == "GCCLINUXL"
+.INCLUDE : unxlngaxp.mk
+.ENDIF
+
# --- general *ix settings ---
HC=hc
HCFLAGS=
diff --git a/crashrep/source/unx/crash_report.sh b/solenv/inc/unxlngaxp.mk
index 62c4bde5d578..bf7711a10c5b 100755..100644
--- a/crashrep/source/unx/crash_report.sh
+++ b/solenv/inc/unxlngaxp.mk
@@ -1,8 +1,7 @@
-#!/bin/sh
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
+#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
@@ -26,23 +25,10 @@
#
#*************************************************************************
-#set -x
-
-# resolve installation directory
-sd_cwd="`pwd`"
-if [ -h "$0" ] ; then
- sd_basename=`basename "$0"`
- sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"`
- cd "`dirname "$0"`"
- cd "`dirname "$sd_script"`"
-else
- cd "`dirname "$0"`"
-fi
-
-sd_prog="`pwd`"
-cd ..
-sd_binary=`basename "$0"`".bin"
-cd "$sd_cwd"
-"$sd_prog/$sd_binary" "$@"
-
+# mk file for Unix Linux Alpha using gcc, please make generic modifications to unxlng.mk
+PICSWITCH:=-fPIC
+.INCLUDE : unxlng.mk
+CFLAGS+=-DAXP
+DLLPOSTFIX=ll
+BUILD64=1
diff --git a/soltools/cpp/cpp.h b/soltools/cpp/cpp.h
index da609dbe53c1..34e18579c35a 100644
--- a/soltools/cpp/cpp.h
+++ b/soltools/cpp/cpp.h
@@ -15,11 +15,8 @@
#define NULL 0
#endif
-#ifndef __alpha
typedef unsigned char uchar;
-#endif
-
enum toktype
{
END, UNCLASS, NAME, NUMBER, STRING, CCON, NL, WS, DSHARP,
diff --git a/splitbuild/extern.lst b/splitbuild/extern.lst
index 334ad19a5b10..d0327f963e34 100644
--- a/splitbuild/extern.lst
+++ b/splitbuild/extern.lst
@@ -1 +1 @@
-afms agg apache-commons apple_remote beanshell berkeleydb bitstream_vera_fonts boost cairo cppunit curl epm expat external fondu graphite hsqldb hunspell hyphen icc icu jfreereport jpeg libegg libtextcat libwpd libxml2 libxmlsec libxslt lpsolve lucene MathMLDTD moz neon np_sdk nss openssl python redland rhino sane saxon stax stlport tomcat twain unixODBC vigra x11_extensions xpdf xsltml zlib
+afms agg apache-commons apple_remote beanshell berkeleydb bitstream_vera_fonts boost cairo cppunit curl epm expat external graphite hsqldb hunspell hyphen icc icu jfreereport jpeg libegg libtextcat libwpd libxml2 libxmlsec libxslt lpsolve lucene MathMLDTD moz neon np_sdk nss openssl python redland rhino sane saxon stax stlport tomcat twain unixODBC vigra x11_extensions xpdf xsltml zlib
diff --git a/stoc/source/corereflection/criface.cxx b/stoc/source/corereflection/criface.cxx
index ec325ce11db1..95d9990257f5 100644
--- a/stoc/source/corereflection/criface.cxx
+++ b/stoc/source/corereflection/criface.cxx
@@ -877,7 +877,8 @@ sal_Bool InterfaceIdlClassImpl::isAssignableFrom( const Reference< XIdlClass > &
Uik InterfaceIdlClassImpl::getUik()
throw(::com::sun::star::uno::RuntimeException)
{
- return *(Uik *)&getTypeDescr()->aUik;
+ return Uik(0, 0, 0, 0, 0);
+ // Uiks are deprecated and this function must not be called
}
//__________________________________________________________________________________________________
Sequence< Reference< XIdlMethod > > InterfaceIdlClassImpl::getMethods()
diff --git a/svl/source/items/style.cxx b/svl/source/items/style.cxx
index b8bed49b603b..60c622208d53 100644
--- a/svl/source/items/style.cxx
+++ b/svl/source/items/style.cxx
@@ -28,7 +28,8 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svl.hxx"
-#ifndef GCC
+#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
+#include <com/sun/star/lang/XComponent.hpp>
#endif
#define _SVSTDARR_STRINGS
@@ -808,6 +809,16 @@ void SfxStyleSheetBasePool::Remove( SfxStyleSheetBase* p )
{
// Alle Styles umsetzen, deren Parent dieser hier ist
ChangeParent( p->GetName(), p->GetParent() );
+
+ com::sun::star::uno::Reference< com::sun::star::lang::XComponent > xComp( static_cast< ::cppu::OWeakObject* >((*aIter).get()), com::sun::star::uno::UNO_QUERY );
+ if( xComp.is() ) try
+ {
+ xComp->dispose();
+ }
+ catch( com::sun::star::uno::Exception& )
+ {
+ }
+
aStyles.erase(aIter);
Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_ERASED, *p ) );
}
@@ -838,6 +849,15 @@ void SfxStyleSheetBasePool::Clear()
SfxStyles::iterator aIter( aClearStyles.begin() );
while( aIter != aClearStyles.end() )
{
+ com::sun::star::uno::Reference< com::sun::star::lang::XComponent > xComp( static_cast< ::cppu::OWeakObject* >((*aIter).get()), com::sun::star::uno::UNO_QUERY );
+ if( xComp.is() ) try
+ {
+ xComp->dispose();
+ }
+ catch( com::sun::star::uno::Exception& )
+ {
+ }
+
Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_ERASED, *(*aIter++).get() ) );
}
}
diff --git a/svl/source/misc/inettype.cxx b/svl/source/misc/inettype.cxx
index bec8b91e7c22..ee9aa5932525 100644
--- a/svl/source/misc/inettype.cxx
+++ b/svl/source/misc/inettype.cxx
@@ -806,16 +806,13 @@ namespace unnamed_svl_inettype {
MediaTypeEntry const * seekEntry(UniString const & rTypeName,
MediaTypeEntry const * pMap, sal_Size nSize)
{
-#if defined DBG_UTIL || defined INETTYPE_DEBUG
- static bool bChecked = false;
- if (!bChecked)
- {
- for (sal_Size i = 0; i < nSize - 1; ++i)
- DBG_ASSERT(pMap[i].m_pTypeName < pMap[i + 1].m_pTypeName,
- "seekEntry(): Bad map");
- bChecked = true;
- }
-#endif // DBG_UTIL, INETTYPE_DEBUG
+#if defined DBG_UTIL
+ for (sal_Size i = 0; i < nSize - 1; ++i)
+ DBG_ASSERT(
+ rtl_str_compare(
+ pMap[i].m_pTypeName, pMap[i + 1].m_pTypeName) < 0,
+ "seekEntry(): Bad map");
+#endif
sal_Size nLow = 0;
sal_Size nHigh = nSize;
diff --git a/svl/source/misc/urihelper.cxx b/svl/source/misc/urihelper.cxx
index a3a3f63367c1..46063564193d 100644
--- a/svl/source/misc/urihelper.cxx
+++ b/svl/source/misc/urihelper.cxx
@@ -123,8 +123,7 @@ inline UniString SmartRel2Abs_Impl(INetURLObject const & rTheBaseURIRef,
eStyle);
if (bCheckFileExists
&& !bWasAbsolute
- && (aAbsURIRef.GetProtocol() == INET_PROT_FILE
- || aAbsURIRef.GetProtocol() == INET_PROT_VND_SUN_STAR_WFS))
+ && (aAbsURIRef.GetProtocol() == INET_PROT_FILE))
{
INetURLObject aNonFileURIRef;
aNonFileURIRef.SetSmartURL(rTheRelURIRef,
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 5b7821aa457e..32c65b06d2f1 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -675,7 +675,7 @@ SvNumberformat::SvNumberformat(String& rString,
xub_StrLen nAnzChars = ImpGetNumber(rString, nPos, sStr);
if (nAnzChars > 0)
{
- short F_Type;
+ short F_Type = NUMBERFORMAT_UNDEFINED;
if (!pISc->IsNumberFormat(sStr,F_Type,fNumber) ||
( F_Type != NUMBERFORMAT_NUMBER &&
F_Type != NUMBERFORMAT_SCIENTIFIC) )
diff --git a/svtools/source/filter.vcl/wmf/winmtf.cxx b/svtools/source/filter.vcl/wmf/winmtf.cxx
index 21f6e69c8d9e..bf176015fd77 100644
--- a/svtools/source/filter.vcl/wmf/winmtf.cxx
+++ b/svtools/source/filter.vcl/wmf/winmtf.cxx
@@ -36,7 +36,7 @@
// ------------------------------------------------------------------------
-#define WIN_MTF_MAX_POLYPOLYCOUNT 16
+#define WIN_MTF_MAX_CLIP_DEPTH 16
void WinMtfClipPath::ImpUpdateType()
{
@@ -54,26 +54,28 @@ void WinMtfClipPath::IntersectClipRect( const Rectangle& rRect )
{
if ( !aPolyPoly.Count() )
aPolyPoly = Polygon( rRect );
- else if ( aPolyPoly.Count() < WIN_MTF_MAX_POLYPOLYCOUNT )
+ else if ( nDepth < WIN_MTF_MAX_CLIP_DEPTH )
{
Polygon aPolygon( rRect );
PolyPolygon aIntersection;
PolyPolygon aPolyPolyRect( aPolygon );
aPolyPoly.GetIntersection( aPolyPolyRect, aIntersection );
aPolyPoly = aIntersection;
+ nDepth++;
}
ImpUpdateType();
}
void WinMtfClipPath::ExcludeClipRect( const Rectangle& rRect )
{
- if ( aPolyPoly.Count() && ( aPolyPoly.Count() < WIN_MTF_MAX_POLYPOLYCOUNT ) )
+ if ( aPolyPoly.Count() && ( nDepth < WIN_MTF_MAX_CLIP_DEPTH ) )
{
Polygon aPolygon( rRect );
PolyPolygon aPolyPolyRect( aPolygon );
PolyPolygon aDifference;
aPolyPoly.GetDifference( aPolyPolyRect, aDifference );
aPolyPoly = aDifference;
+ nDepth++;
}
ImpUpdateType();
}
@@ -82,8 +84,10 @@ void WinMtfClipPath::SetClipPath( const PolyPolygon& rPolyPolygon, sal_Int32 nCl
{
if ( !rPolyPolygon.Count() )
aPolyPoly = rPolyPolygon;
- else if ( rPolyPolygon.Count() < WIN_MTF_MAX_POLYPOLYCOUNT )
+ else if ( nDepth < WIN_MTF_MAX_CLIP_DEPTH )
{
+ nDepth++;
+
PolyPolygon aNewClipPath;
// #115345# Watch out for empty aPolyPoly here - conceptually,
diff --git a/svtools/source/filter.vcl/wmf/winmtf.hxx b/svtools/source/filter.vcl/wmf/winmtf.hxx
index beb1f62e22d6..fb4fd2fe0c57 100644
--- a/svtools/source/filter.vcl/wmf/winmtf.hxx
+++ b/svtools/source/filter.vcl/wmf/winmtf.hxx
@@ -314,6 +314,7 @@ class WinMtfClipPath
{
PolyPolygon aPolyPoly;
WinMtfClipPathType eType;
+ sal_Int32 nDepth;
void ImpUpdateType();
@@ -321,7 +322,7 @@ class WinMtfClipPath
sal_Bool bNeedsUpdate;
- WinMtfClipPath(): eType(EMPTY), bNeedsUpdate( sal_False ){};
+ WinMtfClipPath(): eType(EMPTY), nDepth( 0 ), bNeedsUpdate( sal_False ){};
void SetClipPath( const PolyPolygon& rPolyPolygon, sal_Int32 nClippingMode );
void IntersectClipRect( const Rectangle& rRect );
diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx
index e22ee66e0ea2..e02e8664c6ac 100644
--- a/svx/source/form/datanavi.cxx
+++ b/svx/source/form/datanavi.cxx
@@ -3683,11 +3683,8 @@ namespace svxform
m_aURLED.DisableHistory();
m_aFilePickerBtn.SetClickHdl( LINK( this, AddInstanceDialog, FilePickerHdl ) );
- // load the filter name from svtools resource
- ByteString aResMgrName( "svt" );
- ResMgr* pSvtResMgr = ResMgr::CreateResMgr(
- aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- m_sAllFilterName = String( ResId( STR_FILTERNAME_ALL, *pSvtResMgr ) );
+ // load the filter name from fps_office resource
+ m_sAllFilterName = String( ResId( STR_FILTERNAME_ALL, *CREATEVERSIONRESMGR(fps_office) ) );
}
AddInstanceDialog::~AddInstanceDialog()
diff --git a/svx/source/form/fmundo.cxx b/svx/source/form/fmundo.cxx
index ba7ba492c2fb..e6559850ea5d 100644
--- a/svx/source/form/fmundo.cxx
+++ b/svx/source/form/fmundo.cxx
@@ -90,25 +90,7 @@ class ScriptEventListenerWrapper : public ScriptEventListener_BASE
public:
ScriptEventListenerWrapper( FmFormModel& _rModel) throw ( RuntimeException ) : pModel(&_rModel)
{
- Reference < XPropertySet > xProps(
- ::comphelper::getProcessServiceFactory(), UNO_QUERY );
- if ( xProps.is() )
- {
- Reference< XComponentContext > xCtx( xProps->getPropertyValue(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), UNO_QUERY );
- if ( xCtx.is() )
- {
- Reference< XMultiComponentFactory > xMFac(
- xCtx->getServiceManager(), UNO_QUERY );
- if ( xMFac.is() )
- {
- m_vbaListener.set( xMFac->createInstanceWithContext(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
- "ooo.vba.EventListener" ) ), xCtx ),
- UNO_QUERY_THROW );
- }
- }
- }
+
}
// XEventListener
virtual void SAL_CALL disposing(const EventObject& ) throw( RuntimeException ){}
@@ -136,6 +118,33 @@ public:
private:
void setModel()
{
+ if ( !m_vbaListener.is() )
+ {
+ Reference < XPropertySet > xProps(
+ ::comphelper::getProcessServiceFactory(), UNO_QUERY );
+ if ( xProps.is() )
+ {
+ Reference< XComponentContext > xCtx( xProps->getPropertyValue(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), UNO_QUERY );
+ if ( xCtx.is() )
+ {
+ Reference< XMultiComponentFactory > xMFac(
+ xCtx->getServiceManager(), UNO_QUERY );
+ SfxObjectShellRef xObjSh = pModel->GetObjectShell();
+ Reference< XMultiServiceFactory > xDocFac;
+ if ( xObjSh.Is() )
+ xDocFac.set( xObjSh->GetModel(), UNO_QUERY );
+
+ if ( xMFac.is() )
+ {
+ m_vbaListener.set( xMFac->createInstanceWithContext(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "ooo.vba.EventListener" ) ), xCtx ),
+ UNO_QUERY_THROW );
+ }
+ }
+ }
+ }
Reference< XPropertySet > xProps( m_vbaListener, UNO_QUERY );
if ( xProps.is() )
{
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index 58e0b7bdb425..6ab27c85aaf0 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -700,7 +700,10 @@ void SdrObjCustomShape::MergeDefaultAttributes( const rtl::OUString* pType )
for ( i = 0; i < nCount; i++ )
{
if ( seqAdjustmentValues[ i ].State != com::sun::star::beans::PropertyState_DIRECT_VALUE )
+ {
seqAdjustmentValues[ i ].Value <<= pDefData[ i ];
+ seqAdjustmentValues[ i ].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
+ }
}
}
aPropVal.Name = sAdjustmentValues;
@@ -2075,7 +2078,7 @@ void SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded()
sal_Int32 nXDiff = aBoundRect.Left() - aRect.Left();
sal_Int32 nYDiff = aBoundRect.Top() - aRect.Top();
- if (nShearWink&&(bMirroredX&&!bMirroredY)||(bMirroredY&&!bMirroredX))
+ if (nShearWink&&((bMirroredX&&!bMirroredY)||(bMirroredY&&!bMirroredX)))
{
nShearWink = -nShearWink;
fTan = -fTan;
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
new file mode 100644
index 000000000000..ef39ad6e4c8f
--- /dev/null
+++ b/sw/inc/AnnotationWin.hxx
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _ANNOTATIONWIN_HXX
+#define _ANNOTATIONWIN_HXX
+
+#include <SidebarWin.hxx>
+
+class PopupMenu;
+class OutlinerParaObject;
+
+namespace sw { namespace annotation {
+
+class SwAnnotationWin : public sw::sidebarwindows::SwSidebarWin
+{
+ public:
+ SwAnnotationWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem,
+ SwFmtFld* aField );
+ virtual ~SwAnnotationWin();
+
+ virtual void UpdateData();
+ virtual void SetPostItText();
+ virtual void Delete();
+ virtual void GotoPos();
+
+ virtual String GetAuthor();
+ virtual Date GetDate();
+ virtual Time GetTime();
+
+ virtual sal_uInt32 MoveCaret();
+
+ virtual bool CalcFollow();
+ void InitAnswer(OutlinerParaObject* pText);
+
+ virtual bool IsProtected();
+
+ protected:
+ virtual MenuButton* CreateMenuButton();
+
+ private:
+ virtual SvxLanguageItem GetLanguage(void);
+ sal_uInt32 CountFollowing();
+
+ SwFmtFld* mpFmtFld;
+ SwPostItField* mpFld;
+ PopupMenu* mpButtonPopup;
+
+};
+
+} } // end of namespace sw::annotation
+#endif
diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx
index e3d46238a286..e99c636ccedb 100644
--- a/sw/inc/PostItMgr.hxx
+++ b/sw/inc/PostItMgr.hxx
@@ -39,6 +39,7 @@
#include <unotools/options.hxx>
#include <com/sun/star/util/SearchOptions.hpp>
#include <com/sun/star/uno/Any.hxx>
+#include <SidebarWindowsTypes.hxx>
#include <svl/lstner.hxx>
class SwWrtShell;
@@ -53,9 +54,16 @@ class SwEditWin;
class Color;
class SvxSearchItem;
class SvxLanguageItem;
-class SwPostIt;
-class SwMarginWin;
-class SwMarginItem;
+namespace sw { namespace annotation {
+ class SwAnnotationWin;
+}}
+namespace sw { namespace sidebarwindows {
+ class SwSidebarWin;
+ class SwFrmSidebarWinContainer;
+}}
+class SwSidebarItem;
+class SwFrm;
+class Window;
#define SORT_POS 1
#define SORT_AUTHOR 2
@@ -64,23 +72,20 @@ class SwMarginItem;
#define COL_NOTES_SIDEPANE_ARROW_ENABLED RGB_COLORDATA(0,0,0)
#define COL_NOTES_SIDEPANE_ARROW_DISABLED RGB_COLORDATA(172,168,153)
-typedef std::list<SwMarginItem*> SwMarginItem_list;
-typedef std::list<SwMarginItem*>::iterator SwMarginItem_iterator;
+typedef std::list<SwSidebarItem*> SwSidebarItem_list;
+typedef std::list<SwSidebarItem*>::iterator SwSidebarItem_iterator;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using ::rtl::OUString;
struct SwPostItPageItem
{
bool bScrollbar;
- bool bMarginSide;
+ sw::sidebarwindows::SidebarPosition eSidebarPosition;
long lOffset;
SwRect mPageRect;
- SwMarginItem_list* mList;
+ SwSidebarItem_list* mList;
SwPostItPageItem(): bScrollbar(false),lOffset(0)
{
- mList = new SwMarginItem_list;
+ mList = new SwSidebarItem_list;
}
~SwPostItPageItem()
{
@@ -103,25 +108,27 @@ struct FieldShadowState
class SwNoteProps: public utl::ConfigItem
{
private:
- bool bIsShowAnkor;
+ bool bIsShowAnchor;
public:
- SwNoteProps() : ConfigItem(::rtl::OUString::createFromAscii("Office.Writer/Notes")), bIsShowAnkor(false)
+ SwNoteProps()
+ : ConfigItem(::rtl::OUString::createFromAscii("Office.Writer/Notes"))
+ , bIsShowAnchor(false)
{
- const Sequence<OUString>& rNames = GetPropertyNames();
- Sequence<Any> aValues = GetProperties(rNames);
- const Any* pValues = aValues.getConstArray();
+ const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rNames = GetPropertyNames();
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aValues = GetProperties(rNames);
+ const ::com::sun::star::uno::Any* pValues = aValues.getConstArray();
DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed");
if (aValues.getLength())
- pValues[0]>>=bIsShowAnkor;
+ pValues[0]>>=bIsShowAnchor;
}
- bool IsShowAnkor()
+ bool IsShowAnchor()
{
- return bIsShowAnkor;
+ return bIsShowAnchor;
}
- Sequence<OUString>& GetPropertyNames()
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >& GetPropertyNames()
{
- static Sequence<OUString> aNames;
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > aNames;
if(!aNames.getLength())
{
static const char* aPropNames[] =
@@ -130,9 +137,9 @@ class SwNoteProps: public utl::ConfigItem
};
const int nCount = sizeof(aPropNames)/sizeof(const char*);
aNames.realloc(nCount);
- OUString* pNames = aNames.getArray();
+ ::rtl::OUString* pNames = aNames.getArray();
for(int i = 0; i < nCount; i++)
- pNames[i] = OUString::createFromAscii(aPropNames[i]);
+ pNames[i] = ::rtl::OUString::createFromAscii(aPropNames[i]);
}
return aNames;
}
@@ -147,11 +154,11 @@ class SwPostItMgr: public SfxListener
SwView* mpView;
SwWrtShell* mpWrtShell;
SwEditWin* mpEditWin;
- std::list< SwMarginItem*> mvPostItFlds;
+ std::list< SwSidebarItem*> mvPostItFlds;
std::vector<SwPostItPageItem*> mPages;
ULONG mnEventId;
bool mbWaitingForCalcRects;
- SwMarginWin* mpActivePostIt;
+ sw::sidebarwindows::SwSidebarWin* mpActivePostIt;
bool mbLayout;
long mbLayoutHeight;
long mbLayouting;
@@ -159,18 +166,23 @@ class SwPostItMgr: public SfxListener
bool mbDeleteNote;
FieldShadowState mShadowState;
OutlinerParaObject* mpAnswer;
- bool mpIsShowAnkor;
+ bool mbIsShowAnchor;
- typedef std::list<SwMarginWin*>::iterator SwMarginWin_iterator;
+ // data structure to collect the <SwSidebarWin> instances for certain <SwFrm> instances.
+ sw::sidebarwindows::SwFrmSidebarWinContainer* mpFrmSidebarWinContainer;
+
+ typedef std::list<sw::sidebarwindows::SwSidebarWin*>::iterator SwSidebarWin_iterator;
void AddPostIts(bool bCheckExistance = true,bool bFocus = true);
//void AddRedlineComments(bool bCheckExistance, bool bFocus);
- void RemoveMarginWin();
+ void RemoveSidebarWin();
void PreparePageContainer();
void Scroll(const long lScroll,const unsigned long aPage );
- void AutoScroll(const SwMarginWin* pPostIt,const unsigned long aPage );
+ void AutoScroll(const sw::sidebarwindows::SwSidebarWin* pPostIt,const unsigned long aPage );
bool ScrollbarHit(const unsigned long aPage,const Point &aPoint);
- bool LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const Rectangle aBorder,long lNeededHeight);
+ bool LayoutByPage( std::list<sw::sidebarwindows::SwSidebarWin*> &aVisiblePostItList,
+ const Rectangle aBorder,
+ long lNeededHeight);
void CheckForRemovedPostIts();
bool ArrowEnabled(USHORT aDirection,unsigned long aPage) const;
bool BorderOverPageBorder(unsigned long aPage) const;
@@ -182,29 +194,34 @@ class SwPostItMgr: public SfxListener
sal_Int32 GetSpaceBetween() const;
void SetReadOnlyState();
DECL_LINK( CalcHdl, void*);
- protected:
+
+ sw::sidebarwindows::SwSidebarWin* GetSidebarWin(const SfxBroadcaster* pBroadcaster) const;
+
+ void InsertItem( SfxBroadcaster* pItem, bool bCheckExistance, bool bFocus);
+ void RemoveItem( SfxBroadcaster* pBroadcast );
+
+ void Sort(const short aType);
public:
SwPostItMgr(SwView* aDoc);
~SwPostItMgr();
- typedef std::list< SwMarginItem* >::const_iterator const_iterator;
+ typedef std::list< SwSidebarItem* >::const_iterator const_iterator;
const_iterator begin() const { return mvPostItFlds.begin(); }
const_iterator end() const { return mvPostItFlds.end(); }
- void InsertItem( SfxBroadcaster* pItem, bool bCheckExistance, bool bFocus);
- void RemoveItem( SfxBroadcaster* pBroadcast );
void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
void LayoutPostIts();
bool CalcRects();
- void MakeVisible(const SwMarginWin* pPostIt,long aPage = -1);
+ void MakeVisible( const sw::sidebarwindows::SwSidebarWin* pPostIt,
+ long aPage = -1);
bool ShowScrollbar(const unsigned long aPage) const;
bool HasNotes() const ;
bool ShowNotes() const;
- bool IsShowAnkor() { return mpIsShowAnkor;}
+ bool IsShowAnchor() { return mbIsShowAnchor;}
unsigned long GetSidebarWidth(bool bPx = false) const;
unsigned long GetSidebarBorderWidth(bool bPx = false) const;
unsigned long GetNoteWidth();
@@ -213,8 +230,6 @@ class SwPostItMgr: public SfxListener
void CorrectPositions();
- void Sort(const short aType);
-
void SetLayout() { mbLayout = true; };
void Delete(String aAuthor);
void Delete();
@@ -232,25 +247,32 @@ class SwPostItMgr: public SfxListener
bool IsHit(const Point &aPointPixel);
Color GetArrowColor(USHORT aDirection,unsigned long aPage) const;
- SwMarginWin* GetNextPostIt(USHORT aDirection, SwMarginWin* aPostIt);
+ sw::annotation::SwAnnotationWin* GetAnnotationWin(const SwPostItField* pFld) const;
+
+ sw::sidebarwindows::SwSidebarWin* GetNextPostIt( USHORT aDirection,
+ sw::sidebarwindows::SwSidebarWin* aPostIt);
long GetNextBorder();
- SwMarginWin* GetActivePostIt() { return mpActivePostIt; }
- void SetActivePostIt( SwMarginWin* p);
+
+ sw::sidebarwindows::SwSidebarWin* GetActiveSidebarWin() { return mpActivePostIt; }
+ void SetActiveSidebarWin( sw::sidebarwindows::SwSidebarWin* p);
+ bool HasActiveSidebarWin() const;
+ bool HasActiveAnnotationWin() const;
+ void GrabFocusOnActiveSidebarWin();
+ void UpdateDataOnActiveSidebarWin();
+ void DeleteActiveSidebarWin();
+ void HideActiveSidebarWin();
+ void ToggleInsModeOnActiveSidebarWin();
+
sal_Int32 GetMinimumSizeWithMeta() const;
sal_Int32 GetSidebarScrollerHeight() const;
- SwMarginWin* GetPostIt(const SfxBroadcaster* pBroadcaster) const;
- SwMarginWin* GetPostIt(SfxBroadcaster* pBroadcaster) const;
- SwPostIt* GetPostIt(const SwPostItField* pFld) const;
- SwPostIt* GetPostIt(SwPostItField* pFld) const;
-
void SetShadowState(const SwPostItField* pFld,bool bCursor = true);
void SetSpellChecking();
Color GetColorDark(sal_uInt16 aAuthorIndex);
Color GetColorLight(sal_uInt16 aAuthorIndex);
- Color GetColorAnkor(sal_uInt16 aAuthorIndex);
+ Color GetColorAnchor(sal_uInt16 aAuthorIndex);
bool ShowPreview(const SwField* pFld,SwFmtFld*& pFmtFld) const;
@@ -263,7 +285,18 @@ class SwPostItMgr: public SfxListener
sal_uInt16 SearchReplace(const SwFmtFld &pFld, const ::com::sun::star::util::SearchOptions& rSearchOptions,bool bSrchForward);
sal_uInt16 FinishSearchReplace(const ::com::sun::star::util::SearchOptions& rSearchOptions,bool bSrchForward);
- void AssureStdModeAtShell();
+ void AssureStdModeAtShell();
+
+ void ConnectSidebarWinToFrm( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ sw::sidebarwindows::SwSidebarWin& rSidebarWin );
+ void DisconnectSidebarWinFromFrm( const SwFrm& rFrm,
+ sw::sidebarwindows::SwSidebarWin& rSidebarWin );
+ bool HasFrmConnectedSidebarWins( const SwFrm& rFrm );
+ Window* GetSidebarWinForFrmByIndex( const SwFrm& rFrm,
+ const sal_Int32 nIndex );
+ void GetAllSidebarWinForFrm( const SwFrm& rFrm,
+ std::vector< Window* >* pChildren );
};
#endif
diff --git a/sw/inc/SidebarWin.hxx b/sw/inc/SidebarWin.hxx
new file mode 100644
index 000000000000..e8e918763b7b
--- /dev/null
+++ b/sw/inc/SidebarWin.hxx
@@ -0,0 +1,272 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARWIN_HXX
+#define _SIDEBARWIN_HXX
+
+#include <postithelper.hxx>
+#include <SidebarWindowsTypes.hxx>
+
+#include <vcl/window.hxx>
+#include <swrect.hxx>
+
+#include <tools/datetime.hxx>
+#include <tools/date.hxx>
+
+#include <vcl/lineinfo.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <editeng/editstat.hxx>
+
+class SwPostItMgr;
+class SwPostItField;
+class OutlinerView;
+class Outliner;
+class ScrollBar;
+class SwEditWin;
+class SwView;
+class Edit;
+class MenuButton;
+//class SwRedline;
+class SwFrm;
+
+
+namespace sw { namespace sidebarwindows {
+
+class SidebarTxtControl;
+class AnchorOverlayObject;
+class ShadowOverlayObject;
+
+typedef sal_Int64 SwPostItBits;
+
+#define PB_Preview ((SwPostItBits)0x00000001)
+
+
+class SwSidebarWin : public Window
+{
+ public:
+ SwSidebarWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem );
+ virtual ~SwSidebarWin();
+
+ void SetSize( const Size& rNewSize );
+ void SetPosSizePixelRect( long nX,
+ long nY,
+ long nWidth,
+ long nHeight,
+ const SwRect &aRect,
+ const long PageBorder);
+ void SetPosAndSize();
+ void TranslateTopPosition(const long aAmount);
+ virtual void CheckMetaText();
+
+ inline Point GetAnchorPos() { return mAnchorRect.Pos(); }
+ SwEditWin* EditWin();
+
+ inline OutlinerView* GetOutlinerView() { return mpOutlinerView;}
+ bool HasScrollbar() const;
+ bool IsScrollbarVisible() const;
+ inline ScrollBar* Scrollbar() { return mpVScrollbar; }
+ inline ::sw::sidebarwindows::AnchorOverlayObject* Anchor() { return mpAnchor;}
+ inline ::sw::sidebarwindows::ShadowOverlayObject* Shadow() { return mpShadow;}
+
+ long GetPostItTextHeight();
+
+ void SwitchToPostIt(USHORT aDirection);
+ virtual void SwitchToFieldPos();
+
+ virtual sal_uInt32 MoveCaret() = 0;
+
+ virtual void UpdateData() = 0;
+ virtual void SetPostItText() = 0;
+ virtual void Delete();
+ virtual void GotoPos() = 0;
+
+ virtual String GetAuthor() = 0;
+ virtual Date GetDate() = 0;
+ virtual Time GetTime() = 0;
+
+ void ExecuteCommand(USHORT nSlot);
+ void InitControls();
+ void HidePostIt();
+ void DoResize();
+ void ResizeIfNeccessary(long aOldHeight, long aNewHeight);
+ void SetScrollbar();
+
+ void SetVirtualPosSize( const Point& aPoint, const Size& aSize);
+ const Point VirtualPos() { return mPosSize.TopLeft(); }
+ const Size VirtualSize() { return mPosSize.GetSize(); }
+
+ void ShowAnchorOnly(const Point &aPoint);
+ void ShowNote();
+ void HideNote();
+
+ void ResetAttributes();
+
+ void SetSidebarPosition(sw::sidebarwindows::SidebarPosition eSidebarPosition);
+ void SetReadonly(BOOL bSet);
+ BOOL IsReadOnly() { return mbReadonly;}
+ bool IsPreview() { return nFlags & PB_Preview;}
+
+ void SetColor(Color aColorDark,Color aColorLight, Color aColorAnchor);
+ const Color& ColorAnchor() { return mColorAnchor; }
+ const Color& ColorDark() { return mColorDark; }
+ const Color& ColorLight() { return mColorLight; }
+ void Rescale();
+
+ void SetViewState(::sw::sidebarwindows::ViewState bViewState);
+
+ bool IsFollow() { return mbIsFollow; }
+ void SetFollow( bool bIsFollow) { mbIsFollow = bIsFollow; };
+ virtual bool CalcFollow() = 0;
+
+
+ sal_Int32 GetMetaHeight();
+ sal_Int32 GetMinimumSizeWithMeta();
+ sal_Int32 GetMinimumSizeWithoutMeta();
+ sal_Int32 GetMetaButtonAreaWidth();
+ sal_Int32 GetScrollbarWidth();
+
+ void SetSpellChecking();
+
+ void ToggleInsMode();
+
+ virtual void ActivatePostIt();
+ virtual void DeactivatePostIt();
+
+ void SetChangeTracking( const SwPostItHelper::SwLayoutStatus aStatus,
+ const Color& aColor);
+ SwPostItHelper::SwLayoutStatus GetLayoutStatus() { return mLayoutStatus; }
+ Color GetChangeColor() { return mChangeColor; }
+
+ virtual bool IsProtected() {return mbReadonly;};
+
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+ inline const bool IsMouseOverSidebarWin() const { return mbMouseOver; }
+
+ void SetLanguage(const SvxLanguageItem aNewItem);
+
+ void ChangeSidebarItem( SwSidebarItem& rSidebarItem );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+
+ protected:
+ virtual void DataChanged( const DataChangedEvent& aEvent);
+ virtual void LoseFocus();
+ virtual void Paint( const Rectangle& rRect);
+ virtual void GetFocus();
+ virtual MenuButton* CreateMenuButton() = 0;
+
+ void SetSizePixel( const Size& rNewSize );
+ SfxItemSet DefaultItem();
+
+ DECL_LINK(ModifyHdl, void*);
+ DECL_LINK(ScrollHdl, ScrollBar*);
+ DECL_LINK(DeleteHdl, void*);
+
+ inline SwView& DocView() { return mrView;}
+ inline SwPostItMgr& Mgr() { return mrMgr; }
+ inline Outliner* Engine() { return mpOutliner;}
+
+ private:
+ SwSidebarWin* GetTopReplyNote();
+
+ virtual SvxLanguageItem GetLanguage(void);
+
+ SwPostItMgr& mrMgr;
+ SwView& mrView;
+ const SwPostItBits nFlags;
+
+ ULONG mnEventId;
+
+ OutlinerView* mpOutlinerView;
+ Outliner* mpOutliner;
+
+ sw::sidebarwindows::SidebarTxtControl* mpSidebarTxtControl;
+ ScrollBar* mpVScrollbar;
+ Edit* mpMetadataAuthor;
+ Edit* mpMetadataDate;
+ MenuButton* mpMenuButton;
+
+ sw::sidebarwindows::AnchorOverlayObject* mpAnchor;
+ sw::sidebarwindows::ShadowOverlayObject* mpShadow;
+
+ Color mColorAnchor;
+ Color mColorDark;
+ Color mColorLight;
+ Color mChangeColor;
+
+ sw::sidebarwindows::SidebarPosition meSidebarPosition;
+
+ Rectangle mPosSize;
+ SwRect mAnchorRect;
+ long mPageBorder;
+
+ bool mbMouseOver;
+ SwPostItHelper::SwLayoutStatus mLayoutStatus;
+
+ bool mbReadonly;
+ bool mbIsFollow;
+
+ SwSidebarItem& mrSidebarItem;
+ const SwFrm* mpAnchorFrm;
+};
+
+} } // eof namespace sw::sidebarwindows
+
+
+// implementation for change tracking comments, fully functional, but not yet used
+/*
+class SwRedComment : public SwSidebarWin
+{
+ private:
+ SwRedline* pRedline;
+
+ protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ public:
+ SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed);
+ virtual ~SwRedComment() {};
+
+ virtual void UpdateData();
+ virtual void SetPostItText();
+ virtual void Delete();
+ virtual void GotoPos();
+ virtual void SetPopup();
+ virtual void ActivatePostIt();
+ virtual void DeactivatePostIt();
+
+ virtual String GetAuthor();
+ virtual Date GetDate();
+ virtual Time GetTime();
+
+ virtual bool IsProtected();
+};
+*/
+
+#endif
diff --git a/sc/inc/segdefs.hxx b/sw/inc/SidebarWindowsTypes.hxx
index 6e2153ddb6a5..8b86f87edf87 100644
--- a/sc/inc/segdefs.hxx
+++ b/sw/inc/SidebarWindowsTypes.hxx
@@ -2,10 +2,14 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -24,16 +28,26 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#include "segdefs_.hxx"
-//****************************************************************
-//
-//und jetzt alle probleme mit ERROR: unknown pragma beseitigen
-//
-//----------------------------------------------------------------
+#ifndef _SIDEBARWINDOWSTYPES_HXX
+#define _SIDEBARWINDOWSTYPES_HXX
+
+namespace sw { namespace sidebarwindows {
-//segmente mit laenge 00000H (map) werden von tcovsegs.exe vergessen
-//jetzt defines nachflicken!
+enum ViewState
+{
+ VS_NORMAL,
+ VS_VIEW,
+ VS_EDIT
+};
+enum SidebarPosition
+{
+ SIDEBAR_LEFT, // sidebar on left side
+ SIDEBAR_RIGHT, // sidebar on right side
+ SIDEBAR_NONE // sidebar on neither side
+};
+} } // end of namespace sw::sidebarwindows
+#endif
diff --git a/sw/inc/access.hrc b/sw/inc/access.hrc
index 7ce855267cd6..b6c6bb30086e 100644
--- a/sw/inc/access.hrc
+++ b/sw/inc/access.hrc
@@ -30,28 +30,29 @@
#include "rcid.hrc"
-// --> OD 2004-09-27 #117970# - remove STR_ACCESS_PARAGRAPH_NAME, STR_ACCESS_HEADING_NAME
-// STR_ACCESS_PARAGRAPH_DESC and STR_ACCESS_HEADING_DESC
-#define STR_ACCESS_DOC_NAME (RC_ACCESS_BEGIN + 1)
-#define STR_ACCESS_DOC_DESC (RC_ACCESS_BEGIN + 2)
-#define STR_ACCESS_HEADING_WITH_NUM_DESC (RC_ACCESS_BEGIN + 3)
-#define STR_ACCESS_HEADER_NAME (RC_ACCESS_BEGIN + 4)
-#define STR_ACCESS_HEADER_DESC (RC_ACCESS_BEGIN + 5)
-#define STR_ACCESS_FOOTER_NAME (RC_ACCESS_BEGIN + 6)
-#define STR_ACCESS_FOOTER_DESC (RC_ACCESS_BEGIN + 7)
+#define STR_ACCESS_DOC_NAME (RC_ACCESS_BEGIN + 1)
+#define STR_ACCESS_DOC_DESC (RC_ACCESS_BEGIN + 2)
+#define STR_ACCESS_HEADING_WITH_NUM_DESC (RC_ACCESS_BEGIN + 3)
+#define STR_ACCESS_HEADER_NAME (RC_ACCESS_BEGIN + 4)
+#define STR_ACCESS_HEADER_DESC (RC_ACCESS_BEGIN + 5)
+#define STR_ACCESS_FOOTER_NAME (RC_ACCESS_BEGIN + 6)
+#define STR_ACCESS_FOOTER_DESC (RC_ACCESS_BEGIN + 7)
#define STR_ACCESS_FOOTNOTE_NAME (RC_ACCESS_BEGIN + 8)
#define STR_ACCESS_FOOTNOTE_DESC (RC_ACCESS_BEGIN + 9)
-#define STR_ACCESS_ENDNOTE_NAME (RC_ACCESS_BEGIN + 10)
-#define STR_ACCESS_ENDNOTE_DESC (RC_ACCESS_BEGIN + 11)
-#define STR_ACCESS_REPLACEMENT_POSTIT (RC_ACCESS_BEGIN + 12)
-#define STR_ACCESS_REPLACEMENT_FRAME (RC_ACCESS_BEGIN + 13)
-#define STR_ACCESS_REPLACEMENT_BULLET_GRAPHICS (RC_ACCESS_BEGIN + 14)
+#define STR_ACCESS_ENDNOTE_NAME (RC_ACCESS_BEGIN + 10)
+#define STR_ACCESS_ENDNOTE_DESC (RC_ACCESS_BEGIN + 11)
+#define STR_ACCESS_REPLACEMENT_POSTIT (RC_ACCESS_BEGIN + 12)
+#define STR_ACCESS_REPLACEMENT_FRAME (RC_ACCESS_BEGIN + 13)
+#define STR_ACCESS_REPLACEMENT_BULLET_GRAPHICS (RC_ACCESS_BEGIN + 14)
#define STR_ACCESS_TABLE_DESC (RC_ACCESS_BEGIN + 15)
#define STR_ACCESS_PAGE_NAME (RC_ACCESS_BEGIN + 16)
#define STR_ACCESS_PAGE_DESC (RC_ACCESS_BEGIN + 17)
-// <--
+#define STR_ACCESS_ANNOTATION_AUTHOR_NAME (RC_ACCESS_BEGIN + 18)
+#define STR_ACCESS_ANNOTATION_DATE_NAME (RC_ACCESS_BEGIN + 19)
+#define STR_ACCESS_ANNOTATION_BUTTON_NAME (RC_ACCESS_BEGIN + 20)
+#define STR_ACCESS_ANNOTATION_BUTTON_DESC (RC_ACCESS_BEGIN + 21)
-#define ACCESS_ACT_END STR_ACCESS_PAGE_DESC
+#define ACCESS_ACT_END STR_ACCESS_ANNOTATION_BUTTON_DESC
#if ACCESS_ACT_END > RC_ACCESS_END
#error Resource-Id Ueberlauf in #file, #line
diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx
index 5ee891e3e1f4..01c4593fe636 100644
--- a/sw/inc/accmap.hxx
+++ b/sw/inc/accmap.hxx
@@ -33,14 +33,15 @@
#include <vos/mutex.hxx>
#include <svx/IAccessibleViewForwarder.hxx>
#include <svx/IAccessibleParent.hxx>
-#include "viewsh.hxx"
#include <tools/debug.hxx>
#include <tools/fract.hxx>
#include <vector>
+class ViewShell;
class Rectangle;
class SwFrm;
+class SwTxtFrm;
class SwPageFrm;
class SwAccessibleContext;
class SwAccessibleContextMap_Impl;
@@ -48,85 +49,17 @@ class SwAccessibleEventList_Impl;
class SwAccessibleEventMap_Impl;
class SwShapeList_Impl;
class SdrObject;
-namespace accessibility { class AccessibleShape; }
+namespace accessibility {
+ class AccessibleShape;
+}
class SwAccessibleShapeMap_Impl;
struct SwAccessibleEvent_Impl;
-// --> OD 2005-12-13 #i27301#
class SwAccessibleSelectedParas_Impl;
-// <--
class SwRect;
class MapMode;
class SwAccPreviewData;
-// OD 14.01.2003 #103492#
-#ifndef _PREVWPAGE_HXX
-#include <prevwpage.hxx>
-#endif
-
-// helper class that stores preview data
-class SwAccPreviewData
-{
- typedef std::vector<Rectangle> Rectangles;
- Rectangles maPreviewRects;
- Rectangles maLogicRects;
-
- SwRect maVisArea;
- Fraction maScale;
-
- const SwPageFrm *mpSelPage;
-
- /** adjust logic page retangle to its visible part
-
- OD 17.01.2003 #103492#
-
- @author OD
-
- @param _iorLogicPgSwRect
- input/output parameter - reference to the logic page rectangle, which
- has to be adjusted.
-
- @param _rPrevwPgSwRect
- input parameter - constant reference to the corresponding preview page
- rectangle; needed to determine the visible part of the logic page rectangle.
-
- @param _rPrevwWinSize
- input paramter - constant reference to the preview window size in TWIP;
- needed to determine the visible part of the logic page rectangle
- */
- void AdjustLogicPgRectToVisibleArea( SwRect& _iorLogicPgSwRect,
- const SwRect& _rPrevwPgSwRect,
- const Size& _rPrevwWinSize );
-
-public:
- SwAccPreviewData();
- ~SwAccPreviewData();
-
- // OD 14.01.2003 #103492# - complete re-factoring of method due to new
- // page/print preview functionality.
- void Update( const std::vector<PrevwPage*>& _rPrevwPages,
- const Fraction& _rScale,
- const SwPageFrm* _pSelectedPageFrm,
- const Size& _rPrevwWinSize );
-
- // OD 14.01.2003 #103492# - complete re-factoring of method due to new
- // page/print preview functionality.
- void InvalidateSelection( const SwPageFrm* _pSelectedPageFrm );
-
- const SwRect& GetVisArea() const;
-
- MapMode GetMapModeForPreview( ) const;
-
- /** Adjust the MapMode so that the preview page appears at the
- * proper position. rPoint identifies the page for which the
- * MapMode should be adjusted. If bFromPreview is true, rPoint is
- * a preview coordinate; else it's a document coordinate. */
- // OD 17.01.2003 #103492# - delete unused 3rd parameter.
- void AdjustMapMode( MapMode& rMapMode,
- const Point& rPoint ) const;
-
- inline const SwPageFrm *GetSelPage() const { return mpSelPage; }
-
- void DisposePage(const SwPageFrm *pPageFrm );
-};
+struct PrevwPage;
+class Window;
// real states for events
#define ACC_STATE_EDITABLE 0x01
@@ -154,7 +87,7 @@ typedef sal_uInt16 tAccessibleStates;
class SwAccessibleMap : public accessibility::IAccessibleViewForwarder,
public accessibility::IAccessibleParent
{
- ::vos::OMutex maMutex;
+ mutable ::vos::OMutex maMutex;
::vos::OMutex maEventMutex;
SwAccessibleContextMap_Impl *mpFrmMap;
SwAccessibleShapeMap_Impl *mpShapeMap;
@@ -246,14 +179,7 @@ public:
return mpVSh;
}
- inline const SwRect& GetVisArea() const
- {
- DBG_ASSERT( !GetShell()->IsPreView() || (mpPreview != NULL),
- "preview without preview data?" );
- return GetShell()->IsPreView()
- ? mpPreview->GetVisArea()
- : GetShell()->VisArea();
- }
+ const SwRect& GetVisArea() const;
/** get size of a dedicated preview page
@@ -274,10 +200,14 @@ public:
void RemoveContext( const SdrObject *pObj );
// Dispose frame and its children if bRecursive is set
- void Dispose( const SwFrm *pFrm, const SdrObject *pObj,
- sal_Bool bRecursive=sal_False );
-
- void InvalidatePosOrSize( const SwFrm *pFrm, const SdrObject *pObj,
+ void Dispose( const SwFrm* pFrm,
+ const SdrObject* pObj,
+ Window* pWindow,
+ sal_Bool bRecursive = sal_False );
+
+ void InvalidatePosOrSize( const SwFrm* pFrm,
+ const SdrObject* pObj,
+ Window* pWindow,
const SwRect& rOldFrm );
void InvalidateContent( const SwFrm *pFrm );
@@ -333,6 +263,9 @@ public:
*/
void InvalidateTextSelectionOfAllParas();
+ sal_Int32 GetChildIndex( const SwFrm& rParentFrm,
+ Window& rChild ) const;
+
// update preview data (and fire events if necessary)
// OD 15.01.2003 #103492# - complete re-factoring of method due to new
// page/print preview functionality.
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index c8defcc78a42..3adc03dc13a5 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -907,6 +907,7 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
#define FN_UNO_PARA_NUM_STRING (FN_EXTRA2 + 110)
#define FN_UNO_TABLE_NAME (FN_EXTRA2 + 111)
#define FN_UNO_META (FN_EXTRA2 + 112)
+#define FN_UNO_NESTED_TEXT_CONTENT (FN_EXTRA2 + 113)
/*--------------------------------------------------------------------
Bereich: Hilfe
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index ff3d91add396..d433ff603b2f 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -164,6 +164,7 @@ class SwRubyList;
class SwRubyListEntry;
class SwSectionFmt;
class SwSectionFmts;
+class SwSectionData;
class SwSelBoxes;
class SwSpzFrmFmts;
class SwTOXBase;
@@ -1803,8 +1804,9 @@ public:
inline const Link& GetOle2Link() const {return aOle2Link;}
// insert section (the ODF kind of section, not the nodesarray kind)
- SwSection* InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
- const SfxItemSet* pAttr = 0, bool bUpdate = true);
+ SwSection * InsertSwSection(SwPaM const& rRange, SwSectionData &,
+ SwTOXBase const*const pTOXBase = 0,
+ SfxItemSet const*const pAttr = 0, bool const bUpdate = true);
sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
const SwNode** ppSttNd = 0 ) const;
SwSection* GetCurrSection( const SwPosition& rPos ) const;
@@ -1812,7 +1814,8 @@ public:
const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; }
SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom );
void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False );
- void ChgSection( sal_uInt16 nSect, const SwSection&, const SfxItemSet* = 0, sal_Bool bPreventLinkUpdate = FALSE);
+ void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
+ SfxItemSet const*const = 0, bool const bPreventLinkUpdate = false);
String GetUniqueSectionName( const String* pChkStr = 0 ) const;
/* @@@MAINTAINABILITY-HORROR@@@
diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
index b2483f21a75a..8d2c1a81de49 100644
--- a/sw/inc/editsh.hxx
+++ b/sw/inc/editsh.hxx
@@ -89,6 +89,7 @@ class SwTable;
class SwTextBlocks; // fuer GlossaryRW
class SwFmtFtn;
class SwSection;
+class SwSectionData;
class SwSectionFmt;
class SwTOXMarks;
class SwTOXBase;
@@ -809,9 +810,8 @@ public:
// gebe Liste aller Fussnoten und deren Anfangstexte
USHORT GetSeqFtnList( SwSeqFldList& rList, bool bEndNotes = false );
- // SS fuer Bereiche
- const SwSection* InsertSection( const SwSection& rNew,
- const SfxItemSet* = 0 );
+ SwSection const* InsertSection(
+ SwSectionData & rNewData, SfxItemSet const*const = 0 );
BOOL IsInsRegionAvailable() const;
const SwSection* GetCurrSection() const;
// liefert wie GetCurrSection() den aktuellen Bereich, allerdings geht diese Funktion
@@ -825,7 +825,8 @@ public:
USHORT GetSectionFmtPos( const SwSectionFmt& ) const;
const SwSectionFmt& GetSectionFmt(USHORT nFmt) const;
void DelSectionFmt( USHORT nFmt );
- void ChgSection( USHORT nSect, const SwSection&, const SfxItemSet* = 0 );
+ void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
+ SfxItemSet const*const = 0);
BOOL IsAnySectionInDoc( BOOL bChkReadOnly = FALSE,
BOOL bChkHidden = FALSE,
BOOL BChkTOX = FALSE ) const;
@@ -871,7 +872,7 @@ public:
BOOL IsGlblDocSaveLinks() const;
USHORT GetGlobalDocContent( SwGlblDocContents& rArr ) const;
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
- const SwSection& rNew );
+ SwSectionData & rNew );
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
const SwTOXBase& rTOX );
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos );
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
index 7da1c30e6577..b224d0c5ae24 100644
--- a/sw/inc/fesh.hxx
+++ b/sw/inc/fesh.hxx
@@ -476,7 +476,7 @@ public:
void EndTextEdit(); //Loescht ggf. das Objekt.
//Ankertyp des selektierten Objektes, -1 bei Uneindeutigkeit oder
- //Rahmenselektion; FLY_PAGE bzw. FLY_AT_CNTNT aus frmatr.hxx sonst.
+ //Rahmenselektion; FLY_AT_PAGE bzw. FLY_AT_PARA aus frmatr.hxx sonst.
short GetAnchorId() const;
//Erzeugen von DrawObjekten, beim Begin wird der Objekttyp mitgegeben.
diff --git a/sw/inc/index.hxx b/sw/inc/index.hxx
index 3cf78b290029..5b9dd827108e 100644
--- a/sw/inc/index.hxx
+++ b/sw/inc/index.hxx
@@ -63,7 +63,7 @@ class SW_DLLPUBLIC SwIndex
void Remove(); // Ausketten
public:
- SwIndex( SwIndexReg * pReg, xub_StrLen nIdx = 0 );
+ explicit SwIndex(SwIndexReg *const pReg, xub_StrLen const nIdx = 0);
SwIndex( const SwIndex & );
SwIndex( const SwIndex &, short nDiff );
~SwIndex() { Remove(); }
diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx
index 2d67b1bbce3f..dd822a11dfdd 100644
--- a/sw/inc/ndarr.hxx
+++ b/sw/inc/ndarr.hxx
@@ -25,19 +25,19 @@
*
************************************************************************/
-#ifndef _NDARR_HXX
-#define _NDARR_HXX
+#ifndef SW_NDARR_HXX
+#define SW_NDARR_HXX
+
+#include <vector>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
+
#include <svl/svarray.hxx>
+#include <svtools/embedhlp.hxx>
-#ifndef _BPARR_HXX
#include <bparr.hxx>
-#endif
#include <ndtyp.hxx>
-#include <svtools/embedhlp.hxx>
-#include <vector>
class Graphic;
class GraphicObject;
@@ -55,8 +55,9 @@ class SwNodeRange;
class SwOLENode;
class SwOutlineNodes;
class SwPaM;
-class SwSection;
+class SwSectionData;
class SwSectionFmt;
+class SwTOXBase;
class SwSectionNode;
class SwStartNode;
class SwTableBoxFmt;
@@ -316,12 +317,13 @@ public:
USHORT nMode = 0, SwHistory* pHistory = 0 );
// fuege eine neue SwSection ein
- SwSectionNode* InsertSection( const SwNodeIndex& rNdIdx,
+ SwSectionNode* InsertTextSection(SwNodeIndex const& rNdIdx,
SwSectionFmt& rSectionFmt,
- const SwSection&,
- const SwNodeIndex* pEnde,
- BOOL bInsAtStart = TRUE,
- BOOL bCreateFrms = TRUE );
+ SwSectionData const&,
+ SwTOXBase const*const pTOXBase,
+ SwNodeIndex const*const pEnde,
+ bool const bInsAtStart = true,
+ bool const bCreateFrms = true);
// in welchem Doc steht das Nodes-Array ?
SwDoc* GetDoc() { return pMyDoc; }
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index 868340edc800..217ff06a8be1 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -363,14 +363,30 @@ public:
BOOL DontExpandFmt( const SwIndex& rIdx, bool bFlag = true,
BOOL bFmtToTxtAttributes = TRUE );
- // gebe das vorgegebene Attribut, welches an der TextPosition (rIdx)
- // gesetzt ist zurueck. Gibt es keines, returne 0-Pointer
- // gesetzt heisst: Start <= rIdx < End
- // FIXME: this function does not seem to be well-defined for those
- // hints of which several may cover a single position, like TOXMark,
- // or CharFmt
- SwTxtAttr *GetTxtAttr( const SwIndex& rIdx, USHORT nWhichHt,
- BOOL bExpand = FALSE ) const;
+ enum GetTxtAttrMode {
+ DEFAULT, /// DEFAULT: (Start < nIndex <= End)
+ EXPAND, /// EXPAND : (Start <= nIndex < End)
+ PARENT, /// PARENT : (Start < nIndex < End)
+ };
+
+ /** get the innermost text attribute covering position nIndex.
+ @param nWhich only attribute with this id is returned.
+ @param eMode the predicate for matching (@see GetTxtAttrMode).
+
+ ATTENTION: this function is not well-defined for those
+ hints of which several may cover a single position, like
+ RES_TXTATR_CHARFMT, RES_TXTATR_REFMARK, RES_TXTATR_TOXMARK
+ */
+ SwTxtAttr *GetTxtAttrAt(xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode = DEFAULT) const;
+
+ /** get the innermost text attributes covering position nIndex.
+ @param nWhich only attributes with this id are returned.
+ @param eMode the predicate for matching (@see GetTxtAttrMode).
+ */
+ ::std::vector<SwTxtAttr *> GetTxtAttrsAt(xub_StrLen const nIndex,
+ RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode = DEFAULT) const;
/** get the text attribute at position nIndex which owns
the dummy character CH_TXTATR_* at that position, if one exists.
diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx
index cdf14c33d05b..6cc14bbbf2c2 100644
--- a/sw/inc/node.hxx
+++ b/sw/inc/node.hxx
@@ -25,18 +25,23 @@
*
************************************************************************/
-#ifndef _NODE_HXX
-#define _NODE_HXX
+#ifndef SW_NODE_HXX
+#define SW_NODE_HXX
+
+#include <vector>
+
+#include <boost/utility.hpp>
+#include <boost/shared_ptr.hpp>
#include <tools/mempool.hxx>
#include <tools/gen.hxx>
+
#include "swdllapi.h"
#include <ndarr.hxx>
#include <ndtyp.hxx>
#include <index.hxx>
#include <fmtcol.hxx>
-#include <boost/shared_ptr.hpp>
-#include <vector>
+
// ---------------------
// forward Deklarationen
// ---------------------
@@ -55,6 +60,7 @@ class SwOLENode;
class SwRect;
class SwSection;
class SwSectionFmt;
+class SwTOXBase;
class SwSectionNode;
class SwStartNode;
class SwTabFrm;
@@ -547,22 +553,24 @@ private:
//---------
// SwSectionNode
//---------
-class SwSectionNode : public SwStartNode
+class SwSectionNode
+ : public SwStartNode
+ , private ::boost::noncopyable
{
friend class SwNodes;
- SwSection* pSection;
+
+private:
+ ::std::auto_ptr<SwSection> const m_pSection;
+
protected:
virtual ~SwSectionNode();
public:
- SwSectionNode( const SwNodeIndex&, SwSectionFmt& rFmt );
+ SwSectionNode(SwNodeIndex const&,
+ SwSectionFmt & rFmt, SwTOXBase const*const pTOXBase);
- const SwSection& GetSection() const { return *pSection; }
- SwSection& GetSection() { return *pSection; }
-
- // setze ein neues SectionObject. Erstmal nur gedacht fuer die
- // neuen VerzeichnisSections. Der geht ueber in den Besitz des Nodes!
- void SetNewSection( SwSection* pNewSection );
+ const SwSection& GetSection() const { return *m_pSection; }
+ SwSection& GetSection() { return *m_pSection; }
SwFrm *MakeFrm();
@@ -591,10 +599,6 @@ public:
// _nicht_ in einem versteckten (Unter-)Bereich liegt
BOOL IsCntntHidden() const;
-private:
- // privater Constructor, weil nie kopiert werden darf !!
- SwSectionNode( const SwSection& rNode );
- SwSectionNode & operator= ( const SwSection& rNode );
};
diff --git a/sw/inc/postit.hxx b/sw/inc/postit.hxx
deleted file mode 100644
index 6a21f8781d6c..000000000000
--- a/sw/inc/postit.hxx
+++ /dev/null
@@ -1,413 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _POSTIT_HXX
-#define _POSTIT_HXX
-
-#include <postithelper.hxx>
-
-#include <vcl/window.hxx>
-#include <swrect.hxx>
-#include <svx/sdr/overlay/overlayobject.hxx>
-
-#include <tools/datetime.hxx>
-#include <tools/date.hxx>
-
-#include <vcl/lineinfo.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <editeng/editstat.hxx>
-
-class SwPostItMgr;
-class SwPostItField;
-class SwFmtFld;
-class OutlinerView;
-class Outliner;
-class ScrollBar;
-class SwEditWin;
-class SwView;
-class SwPostIt;
-class Edit;
-class MultiLineEdit;
-class PopupMenu;
-class SvxLanguageItem;
-class SwRedline;
-class OutlinerParaObject;
-
-#define ANKORLINE_WIDTH 1
-
-enum AnkorState {AS_ALL, AS_START, AS_END,AS_TRI};
-
-class SwPostItAnkor: public sdr::overlay::OverlayObjectWithBasePosition
-{
- protected:
- /* 6------------7
- 1 /
- /4\ ---------------5
- 2 - 3
- */
-
- basegfx::B2DPoint maSecondPosition;
- basegfx::B2DPoint maThirdPosition;
- basegfx::B2DPoint maFourthPosition;
- basegfx::B2DPoint maFifthPosition;
- basegfx::B2DPoint maSixthPosition;
- basegfx::B2DPoint maSeventhPosition;
-
- // helpers to fill and reset geometry
- void implEnsureGeometry();
- void implResetGeometry();
-
- // geometry creation for OverlayObject
- virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
-
- private:
- // object's geometry
- basegfx::B2DPolygon maTriangle;
- basegfx::B2DPolygon maLine;
- basegfx::B2DPolygon maLineTop;
- unsigned long mHeight;
- AnkorState mAnkorState;
-
- // bitfield
- unsigned mbShadowedEffect : 1;
- unsigned mbLineSolid : 1;
-
- public:
- SwPostItAnkor(const basegfx::B2DPoint& rBasePos,
- const basegfx::B2DPoint& rSecondPos,
- const basegfx::B2DPoint& rThirdPos,
- const basegfx::B2DPoint& rFourthPos,
- const basegfx::B2DPoint& rFifthPos,
- const basegfx::B2DPoint& rSixthPos,
- const basegfx::B2DPoint& rSeventhPos,
- Color aBaseColor,
- bool bShadowedEffect,
- bool bLineSolid);
- virtual ~SwPostItAnkor();
-
- const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
- const basegfx::B2DPoint& GetThirdPosition() const { return maThirdPosition; }
- const basegfx::B2DPoint& GetFourthPosition() const { return maFourthPosition; }
- const basegfx::B2DPoint& GetFifthPosition() const { return maFifthPosition; }
- const basegfx::B2DPoint& GetSixthPosition() const { return maSixthPosition; }
- const basegfx::B2DPoint& GetSeventhPosition() const { return maSeventhPosition; }
-
- void SetAllPosition(const basegfx::B2DPoint& rPoint1, const basegfx::B2DPoint& rPoint2, const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4, const basegfx::B2DPoint& rPoint5, const basegfx::B2DPoint& rPoint6, const basegfx::B2DPoint& rPoint7);
- void SetTriPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2,const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4,const basegfx::B2DPoint& rPoint5);
- void SetSixthPosition(const basegfx::B2DPoint& rNew);
- void SetSeventhPosition(const basegfx::B2DPoint& rNew);
-
- bool getLineSolid() const { return mbLineSolid; }
- void setLineSolid(bool bNew);
-
- void SetHeight(const unsigned long aHeight) {mHeight = aHeight;};
-
- bool getShadowedEffect() const { return mbShadowedEffect; }
-
- void SetAnkorState(AnkorState aState);
- AnkorState GetAnkorState() const {return mAnkorState;}
-};
-
-enum ShadowState {SS_NORMAL, SS_VIEW, SS_EDIT};
-
-class SwPostItShadow: public sdr::overlay::OverlayObjectWithBasePosition
-{
- protected:
- // geometry creation for OverlayObject
- virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
-
- private:
- basegfx::B2DPoint maSecondPosition;
- ShadowState mShadowState;
-
- public:
- SwPostItShadow(const basegfx::B2DPoint& rBasePos, const basegfx::B2DPoint& rSecondPosition, Color aBaseColor,ShadowState aState);
- virtual ~SwPostItShadow();
-
- void SetShadowState(ShadowState aState);
- ShadowState GetShadowState() {return mShadowState;}
-
- const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
- void SetSecondPosition(const basegfx::B2DPoint& rNew);
- void SetPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2);
-};
-
-class PostItTxt : public Window
-{
- private:
- OutlinerView* mpOutlinerView;
- SwMarginWin* mpMarginWin;
-
- bool mMouseOver;
- BOOL mbShowPopup;
-
- protected:
- virtual void Paint( const Rectangle& rRect);
- virtual void KeyInput( const KeyEvent& rKeyEvt );
- virtual void MouseMove( const MouseEvent& rMEvt );
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- virtual void MouseButtonUp( const MouseEvent& rMEvt );
- virtual void Command( const CommandEvent& rCEvt );
- virtual void DataChanged( const DataChangedEvent& aData);
- virtual void LoseFocus();
- virtual void RequestHelp(const HelpEvent &rEvt);
- virtual XubString GetSurroundingText() const;
- virtual Selection GetSurroundingTextSelection() const;
-
- DECL_LINK( Select, Menu* );
-
- public:
- PostItTxt(Window* pParent, WinBits nBits);
- ~PostItTxt();
-
- virtual void GetFocus();
- void SetTextView( OutlinerView* aEditView ) { mpOutlinerView = aEditView; }
-
- DECL_LINK( WindowEventListener, VclSimpleEvent* );
- DECL_LINK( OnlineSpellCallback, SpellCallbackInfo*);
-};
-
-typedef sal_Int64 SwPostItBits;
-
-#define PB_Preview ((SwPostItBits)0x00000001)
-
-
-class SwMarginWin : public Window
-{
- private:
- ULONG mnEventId;
- SwView* mpView;
- sdr::overlay::OverlayManager* pOverlayManager;
- OutlinerView* mpOutlinerView;
- Outliner* mpOutliner;
- PostItTxt* mpPostItTxt;
- MultiLineEdit* mpMeta;
- ScrollBar* mpVScrollbar;
- SwPostItAnkor* mpAnkor;
- SwPostItShadow* mpShadow;
- SwPostItMgr* mpMgr;
- bool mbMeta;
- Color mColorAnkor;
- Color mColorDark;
- Color mColorLight;
- basegfx::B2DPolygon aPopupTriangle;
- bool mbMarginSide;
- Rectangle mPosSize;
- SwRect mAnkorRect;
- long mPageBorder;
- SwPostItBits nFlags;
- bool mbMouseOverButton;
-
- protected:
- bool mbReadonly;
- PopupMenu* mpButtonPopup;
- bool mbIsFollow;
- Rectangle mRectMetaButton;
- virtual void DataChanged( const DataChangedEvent& aEvent);
- virtual void LoseFocus();
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- virtual void MouseMove( const MouseEvent& rMEvt );
- virtual void Paint( const Rectangle& rRect);
- virtual void GetFocus();
-
- void SetSizePixel( const Size& rNewSize );
- SfxItemSet DefaultItem();
-
- DECL_LINK(ModifyHdl, void*);
- DECL_LINK(ScrollHdl, ScrollBar*);
- DECL_LINK(DeleteHdl, void*);
-
- public:
- TYPEINFO();
- SwMarginWin( Window* pParent, WinBits nBits, SwPostItMgr* aMgr,SwPostItBits aBits);
- virtual ~SwMarginWin();
-
- void SetSize( const Size& rNewSize );
- void SetPosSizePixelRect( long nX, long nY,long nWidth, long nHeight,const SwRect &aRect,const long PageBorder);
- void SetPosAndSize();
- void TranslateTopPosition(const long aAmount);
- virtual void CheckMetaText();
-
- PostItTxt* PostItText() { return mpPostItTxt;}
- ScrollBar* Scrollbar() { return mpVScrollbar;}
- SwPostItAnkor* Ankor() { return mpAnkor;}
- SwPostItShadow* Shadow() { return mpShadow;}
- OutlinerView* View() { return mpOutlinerView;}
- SwView* DocView() { return mpView;}
- Outliner* Engine() { return mpOutliner;}
- SwPostItMgr* Mgr() { return mpMgr; }
-
- SwRect GetAnkorRect() { return mAnkorRect; }
- SwEditWin* EditWin();
-
- long GetPostItTextHeight();
-
- void SwitchToPostIt(USHORT aDirection);
- //void SwitchToPostIt(bool aDirection);
- virtual void SwitchToFieldPos();
- virtual sal_uInt32 MoveCaret() { return 0;};
-
- virtual void UpdateData() = 0;
- virtual void SetPostItText() = 0;
- virtual void Delete();
- virtual void GotoPos() = 0;
- virtual void SetPopup() = 0;
-
- virtual String GetAuthor();
- virtual Date GetDate();
- virtual Time GetTime();
-
- void ExecuteCommand(USHORT nSlot);
- void InitControls();
- void HidePostIt();
- void DoResize();
- void ResizeIfNeccessary(long aOldHeight, long aNewHeight);
- void SetScrollbar();
-
- void SetVirtualPosSize( const Point& aPoint, const Size& aSize);
- const Point VirtualPos() { return mPosSize.TopLeft(); }
- const Size VirtualSize() { return mPosSize.GetSize(); }
-
- void ShowAnkorOnly(const Point &aPoint);
- void ShowNote();
- void HideNote();
-
- void ResetAttributes();
-
- void SetMarginSide(bool aMarginSide);
- void SetReadonly(BOOL bSet);
- BOOL IsReadOnly() { return mbReadonly;}
- bool IsPreview() { return nFlags & PB_Preview;}
-
- void SetLanguage(const SvxLanguageItem aNewItem);
- virtual SvxLanguageItem GetLanguage(void);
-
- void SetColor(Color aColorDark,Color aColorLight, Color aColorAnkor);
- Color ColorDark() { return mColorDark; }
- Color ColorLight() { return mColorLight; }
- void Rescale();
-
- void SetViewState(ShadowState bState);
-
- bool IsFollow() { return mbIsFollow; }
- void SetFollow( bool bIsFollow) { mbIsFollow = bIsFollow;};
- virtual bool CalcFollow();
-
- SwMarginWin* GetTopReplyNote();
- bool IsAnyStackParentVisible();
-
- sal_Int32 GetMetaHeight();
- sal_Int32 GetMinimumSizeWithMeta();
- sal_Int32 GetMinimumSizeWithoutMeta();
- sal_Int32 GetMetaButtonAreaWidth();
- sal_Int32 GetScrollbarWidth();
-
- void SetSpellChecking();
-
- void ToggleInsMode();
-
- virtual void ActivatePostIt();
- virtual void DeactivatePostIt();
-
- virtual SwPostItHelper::SwLayoutStatus GetStatus() { return SwPostItHelper::NONE; }
-
- virtual bool IsProtected() {return mbReadonly;};
-};
-
-// implementation for change tracking comments, fully functional, but not yet used
-/*
-class SwRedComment : public SwMarginWin
-{
- private:
- SwRedline* pRedline;
-
- protected:
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- public:
- TYPEINFO();
- SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed);
- virtual ~SwRedComment() {};
-
- virtual void UpdateData();
- virtual void SetPostItText();
- virtual void Delete();
- virtual void GotoPos();
- virtual void SetPopup();
- virtual void ActivatePostIt();
- virtual void DeactivatePostIt();
-
- virtual String GetAuthor();
- virtual Date GetDate();
- virtual Time GetTime();
-
- virtual bool IsProtected();
-};
-*/
-class SwPostIt : public SwMarginWin
-{
- private:
- SwFmtFld* mpFmtFld;
- SwPostItField* mpFld;
- SwPostItHelper::SwLayoutStatus mStatus;
- Color mChangeColor;
-
- protected:
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
-
- public:
- TYPEINFO();
- SwPostIt( Window* pParent, WinBits nBits,SwFmtFld* aField,SwPostItMgr* aMgr,SwPostItBits aBits);
- virtual ~SwPostIt() {};
-
- virtual void UpdateData();
- virtual void SetPostItText();
- virtual void Delete();
- virtual void GotoPos();
- virtual void SetPopup();
-
- virtual String GetAuthor();
- virtual Date GetDate();
- virtual Time GetTime();
-
- virtual sal_uInt32 MoveCaret();
-
- void SetChangeTracking(SwPostItHelper::SwLayoutStatus& aStatus,Color aColor);
- virtual SwPostItHelper::SwLayoutStatus GetStatus() { return mStatus; }
- Color GetChangeColor() { return mChangeColor; }
-
- sal_uInt32 CountFollowing();
- virtual bool CalcFollow();
- void InitAnswer(OutlinerParaObject* pText);
-
- virtual SvxLanguageItem GetLanguage(void);
-
- virtual bool IsProtected();
-};
-
-#endif
diff --git a/sw/inc/postithelper.hxx b/sw/inc/postithelper.hxx
index c6d68b8c2c63..560cdd143a56 100644
--- a/sw/inc/postithelper.hxx
+++ b/sw/inc/postithelper.hxx
@@ -32,14 +32,18 @@
#include <redline.hxx>
#include <vector>
#include <vcl/window.hxx>
+#include <SidebarWindowsTypes.hxx>
#include <svl/brdcst.hxx>
class SwTxtFld;
class SwRootFrm;
class SwPostIt;
class String;
-class SwMarginWin;
class SwPostItMgr;
+class SwEditWin;
+namespace sw { namespace sidebarwindows {
+ class SwSidebarWin;
+} }
struct SwPosition;
@@ -47,12 +51,23 @@ typedef sal_Int64 SwPostItBits;
struct SwLayoutInfo
{
+ const SwFrm* mpAnchorFrm;
SwRect mPosition;
SwRect mPageFrame;
SwRect mPagePrtArea;
unsigned long mnPageNumber;
- bool mbMarginSide;
+ sw::sidebarwindows::SidebarPosition meSidebarPosition;
USHORT mRedlineAuthor;
+
+ SwLayoutInfo()
+ : mpAnchorFrm(0)
+ , mPosition()
+ , mPageFrame()
+ , mPagePrtArea()
+ , mnPageNumber(1)
+ , meSidebarPosition(sw::sidebarwindows::SIDEBAR_NONE)
+ , mRedlineAuthor(0)
+ {}
};
namespace SwPostItHelper
@@ -69,71 +84,77 @@ namespace SwPostItHelper
unsigned long getPageInfo( SwRect& rPageFrm, const SwRootFrm* , const Point& );
}
-class SwMarginItem
+class SwSidebarItem
{
public:
- SwMarginWin* pPostIt;
+ sw::sidebarwindows::SwSidebarWin* pPostIt;
bool bShow;
bool bFocus;
- bool bMarginSide;
- SwRect mPos;
- SwRect mFramePos;
- SwRect mPagePos;
- unsigned long mnPageNumber;
+
SwPostItHelper::SwLayoutStatus mLayoutStatus;
- USHORT mRedlineAuthor;
- SwMarginItem(bool aShow, bool aFocus)
- : pPostIt(0),
- bShow(aShow),
- bFocus(aFocus),
- bMarginSide(false),
- mnPageNumber(1),
- mLayoutStatus( SwPostItHelper::INVISIBLE ),
- mRedlineAuthor(0)
+ SwLayoutInfo maLayoutInfo;
+
+ SwSidebarItem( const bool aShow,
+ const bool aFocus)
+ : pPostIt(0)
+ , bShow(aShow)
+ , bFocus(aFocus)
+ , mLayoutStatus( SwPostItHelper::INVISIBLE )
+ , maLayoutInfo()
{}
- virtual ~SwMarginItem(){}
- virtual SwPosition GetPosition() = 0;
+ virtual ~SwSidebarItem(){}
+ virtual SwPosition GetAnchorPosition() const = 0;
virtual bool UseElement() = 0;
- virtual SwFmtFld* GetFmtFld() = 0;
+ virtual SwFmtFld* GetFmtFld() const = 0;
virtual SfxBroadcaster* GetBroadCaster() const = 0;
- virtual SwMarginWin* GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits) = 0;
+ virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits) = 0;
};
/*
-class SwRedCommentItem: public SwMarginItem
+class SwRedCommentItem: public SwSidebarItem
{
private:
SwRedline* pRedline;
public:
SwRedCommentItem( SwRedline* pRed, bool aShow, bool aFocus)
- : SwMarginItem(aShow,aFocus),
+ : SwSidebarItem(aShow,aFocus),
pRedline(pRed) {}
virtual ~SwRedCommentItem() {}
- virtual SwPosition GetPosition();
+ virtual SwPosition GetAnchorPosition() const;
virtual bool UseElement();
- virtual SwFmtFld* GetFmtFld() {return 0; }
+ virtual SwFmtFld* GetFmtFld() const {return 0; }
virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pRedline); }
- virtual SwMarginWin* GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits);
+ virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits);
};
*/
-class SwPostItItem: public SwMarginItem
+class SwAnnotationItem: public SwSidebarItem
{
private:
SwFmtFld* pFmtFld;
public:
- SwPostItItem( SwFmtFld* p, bool aShow, bool aFocus)
- : SwMarginItem(aShow,aFocus) ,
- pFmtFld(p)
- {
- }
- virtual ~SwPostItItem() {}
- virtual SwPosition GetPosition();
+ SwAnnotationItem( SwFmtFld* p,
+ const bool aShow,
+ const bool aFocus)
+ : SwSidebarItem( aShow, aFocus )
+ , pFmtFld(p)
+ {}
+ virtual ~SwAnnotationItem() {}
+ virtual SwPosition GetAnchorPosition() const;
virtual bool UseElement();
- virtual SwFmtFld* GetFmtFld() {return pFmtFld;}
+ virtual SwFmtFld* GetFmtFld() const {return pFmtFld;}
virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pFmtFld); }
- virtual SwMarginWin* GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits);
+ virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits);
};
#endif // _POSTITHELPER_HXX
diff --git a/sw/inc/rcid.hrc b/sw/inc/rcid.hrc
index 86f47b0b9194..8a788933dc4e 100644
--- a/sw/inc/rcid.hrc
+++ b/sw/inc/rcid.hrc
@@ -78,6 +78,7 @@
#define RC_UNDO (RC_BASE + 3750)
#define RC_SMARTTAG (RC_BASE + 3950) // SMARTTAGS
#define RC_UNOCORE (RC_BASE + 4050)
+#define RC_ANNOTATION (RC_BASE + 4150)
/*--------------------------------------------------------------------
Beschreibung: Bereiche ausspannen
@@ -87,8 +88,6 @@
#define RC_APP_BEGIN RC_APP
#define RC_APP_END (RC_APP_BEGIN + 199)
-
-
// Dialog-Verzeichnis
#define RC_DIALOG_BEGIN RC_DIALOG
#define RC_DIALOG_END (RC_DIALOG_BEGIN + 99)
@@ -97,6 +96,10 @@
#define RC_DOCVW_BEGIN RC_DOCVW
#define RC_DOCVW_END (RC_DOCVW_BEGIN + 99)
+// Annotation
+#define RC_ANNOTATION_BEGIN RC_ANNOTATION
+#define RC_ANNOTATION_END (RC_ANNOTATION_BEGIN + 99)
+
// SW/Web
#define RC_WEB_BEGIN RC_WEB
#define RC_WEB_END (RC_WEB_BEGIN + 199)
diff --git a/sw/inc/rolbck.hxx b/sw/inc/rolbck.hxx
index 8cac6c06691b..e2aa129f65e1 100644
--- a/sw/inc/rolbck.hxx
+++ b/sw/inc/rolbck.hxx
@@ -75,13 +75,6 @@ class SwCharFmt;
#include <memory>
-#ifdef DBG_UTIL
-class Writer;
-#define OUT_HSTR_HINT( name ) \
- friend Writer& OutUndo_Hstr_ ## name( Writer&, const SwHistoryHint& );
-#else
-#define OUT_HSTR_HINT( name )
-#endif
enum HISTORY_HINT {
HSTRY_SETFMTHNT,
@@ -126,7 +119,6 @@ public:
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
virtual String GetDescription() const;
- OUT_HSTR_HINT(SetFmtHnt)
};
class SwHistoryResetFmt : public SwHistoryHint
@@ -140,7 +132,6 @@ public:
// <--
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(ResetFmtHnt)
};
class SwHistorySetTxt : public SwHistoryHint
@@ -155,12 +146,11 @@ public:
virtual ~SwHistorySetTxt();
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetTxtHnt)
};
class SwHistorySetTxtFld : public SwHistoryHint
{
- //!! beware of the order for the declation of thje auto_ptrs.
+ //!! beware of the order for the declation of the auto_ptrs.
//!! If they get destroyed in the wrong order sw may crash (namely mail-merge as well)
::std::auto_ptr<SwFieldType> m_pFldType;
const ::std::auto_ptr<SwFmtFld> m_pFld;
@@ -176,7 +166,6 @@ public:
virtual String GetDescription() const;
- OUT_HSTR_HINT(SetTxtFldHnt)
};
class SwHistorySetRefMark : public SwHistoryHint
@@ -190,7 +179,6 @@ public:
SwHistorySetRefMark( SwTxtRefMark* pTxtHt, ULONG nNode );
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetRefMarkHnt)
};
class SwHistorySetTOXMark : public SwHistoryHint
@@ -207,7 +195,6 @@ public:
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
int IsEqual( const SwTOXMark& rCmp ) const;
- OUT_HSTR_HINT(SetToxMarkHnt)
};
class SwHistoryResetTxt : public SwHistoryHint
@@ -226,7 +213,6 @@ public:
ULONG GetNode() const { return m_nNodeIndex; }
xub_StrLen GetCntnt() const { return m_nStart; }
- OUT_HSTR_HINT(ResetTxtHnt)
};
class SwHistorySetFootnote : public SwHistoryHint
@@ -245,7 +231,6 @@ public:
virtual String GetDescription() const;
- OUT_HSTR_HINT(SetFtnHnt)
};
class SwHistoryChangeFmtColl : public SwHistoryHint
@@ -258,7 +243,6 @@ public:
SwHistoryChangeFmtColl( SwFmtColl* pColl, ULONG nNode, BYTE nNodeWhich );
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(ChangeFmtColl)
};
class SwHistoryTxtFlyCnt : public SwHistoryHint
@@ -271,7 +255,6 @@ public:
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
SwUndoDelLayFmt* GetUDelLFmt() { return m_pUndo.get(); }
- OUT_HSTR_HINT(FlyCnt)
};
class SwHistoryBookmark : public SwHistoryHint
@@ -284,7 +267,6 @@ class SwHistoryBookmark : public SwHistoryHint
bool IsEqualBookmark(const ::sw::mark::IMark& rBkmk);
const ::rtl::OUString& GetName() const;
- OUT_HSTR_HINT(Bookmark)
private:
const ::rtl::OUString m_aName;
@@ -312,7 +294,6 @@ public:
const SvUShortsSort& rSetArr );
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetAttrSet)
};
@@ -333,7 +314,6 @@ public:
ULONG GetNode() const { return m_nNodeIndex; }
xub_StrLen GetCntnt() const { return m_nStart; }
- OUT_HSTR_HINT(ResetAttrSet)
};
class SwHistoryChangeFlyAnchor : public SwHistoryHint
@@ -368,7 +348,6 @@ public:
SwHistoryChangeCharFmt( const SfxItemSet& rSet, const String & sFmt);
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetAttrSet)
};
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index 6ca584c82a11..db99cfdf4d52 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -28,14 +28,16 @@
#ifndef _SECTION_HXX
#define _SECTION_HXX
+#include <boost/utility.hpp>
#include <com/sun/star/uno/Sequence.h>
-#include <sfx2/lnkbase.hxx>
+
#include <tools/rtti.hxx>
-#ifndef _TOOLS_REF_HXX
#include <tools/ref.hxx>
-#endif
#include <svl/svarray.hxx>
+#include <sfx2/lnkbase.hxx>
+#include <sfx2/Metadatable.hxx>
+
#include <frmfmt.hxx>
@@ -77,61 +79,119 @@ enum LinkCreateType
CREATE_UPDATE // Link connecten und updaten
};
+class SW_DLLPUBLIC SwSectionData
+{
+private:
+ SectionType m_eType;
+
+ String m_sSectionName;
+ String m_sCondition;
+ String m_sLinkFileName;
+ String m_sLinkFilePassword; // JP 27.02.2001: must be changed to Sequence
+ ::com::sun::star::uno::Sequence <sal_Int8> m_Password;
+
+ /// it seems this flag caches the current final "hidden" state
+ bool m_bHiddenFlag : 1;
+ /// flags that correspond to attributes in the format:
+ /// may have different value than format attribute:
+ /// format attr has value for this section, while flag is
+ /// effectively ORed with parent sections!
+ bool m_bProtectFlag : 1;
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ bool m_bEditInReadonlyFlag : 1;
+ // <--
+ bool m_bHidden : 1; // all paragraphs hidden?
+ bool m_bCondHiddenFlag : 1; // Hiddenflag for condition
+ bool m_bConnectFlag : 1; // connected to server?
+
+public:
+
+ SwSectionData(SectionType const eType, String const& rName);
+ explicit SwSectionData(SwSection const&);
+ SwSectionData(SwSectionData const&);
+ SwSectionData & operator=(SwSectionData const&);
+ bool operator==(SwSectionData const&) const;
+
+ String const& GetSectionName() const { return m_sSectionName; }
+ void SetSectionName(String const& rName){ m_sSectionName = rName; }
+ SectionType GetType() const { return m_eType; }
+ void SetType(SectionType const eNew) { m_eType = eNew; }
+
+ bool IsHidden() const { return m_bHidden; }
+ void SetHidden(bool const bFlag = true) { m_bHidden = bFlag; }
+
+ bool IsHiddenFlag() const { return m_bHiddenFlag; }
+ SW_DLLPRIVATE void
+ SetHiddenFlag(bool const bFlag) { m_bHiddenFlag = bFlag; }
+ bool IsProtectFlag() const { return m_bProtectFlag; }
+ SW_DLLPRIVATE void
+ SetProtectFlag(bool const bFlag) { m_bProtectFlag = bFlag; }
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ bool IsEditInReadonlyFlag() const { return m_bEditInReadonlyFlag; }
+ void SetEditInReadonlyFlag(bool const bFlag)
+ { m_bEditInReadonlyFlag = bFlag; }
+ // <--
+
+ void SetCondHidden(bool const bFlag = true) { m_bCondHiddenFlag = bFlag; };
+ bool IsCondHidden() const { return m_bCondHiddenFlag; }
+
+ String const& GetCondition() const { return m_sCondition; }
+ void SetCondition(String const& rNew) { m_sCondition = rNew; }
+
+ String const& GetLinkFileName() const { return m_sLinkFileName; };
+ void SetLinkFileName(String const& rNew, String const* pPassWd = 0)
+ {
+ m_sLinkFileName = rNew;
+ if (pPassWd) { SetLinkFilePassword(*pPassWd); }
+ }
+
+ String const& GetLinkFilePassword() const { return m_sLinkFilePassword; }
+ void SetLinkFilePassword(String const& rS) { m_sLinkFilePassword = rS; }
-class SW_DLLPUBLIC SwSection : public SwClient
+ ::com::sun::star::uno::Sequence<sal_Int8> const& GetPassword() const
+ { return m_Password; }
+ void SetPassword(::com::sun::star::uno::Sequence<sal_Int8> const& rNew)
+ { m_Password = rNew; }
+ bool IsLinkType() const
+ { return (DDE_LINK_SECTION == m_eType) || (FILE_LINK_SECTION == m_eType); }
+
+ bool IsConnectFlag() const { return m_bConnectFlag; }
+ void SetConnectFlag(bool const bFlag = true){ m_bConnectFlag = bFlag; }
+};
+
+class SW_DLLPUBLIC SwSection
+ : public SwClient
+ , private ::boost::noncopyable
{
// damit beim Anlegen/Loeschen von Frames das Flag richtig gepflegt wird!
friend class SwSectionNode;
// the "read CTOR" of SwSectionFrm have to change the Hiddenflag
friend class SwSectionFrm;
- String sSectionNm;
- String sCondition; // erstmal, vielleicht auch mal ein Feld ??
- String sLinkFileName,
- sLinkFilePassWd; // JP 27.02.2001: must later changed to Sequence
- ::com::sun::star::uno::Sequence <sal_Int8> aPasswd;
-
- SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
- ::sfx2::SvBaseLinkRef refLink;
-
- SectionType eType;
-
- BOOL bProtectFlag : 1; // Flags fuer schnelle Abfragen, wird ueber
- // Attribut im Format gesetzt
- BOOL bHiddenFlag : 1; // Flag: Absaetze versteckt ?
- // --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL bEditInReadonlyFlag : 1;
- // <--
- BOOL bHidden : 1; // alle Absaetze nicht sichtbar ?
- BOOL bCondHiddenFlag : 1; // Hiddenflag fuer die Bedingung ?
- BOOL bConnectFlag : 1; // Flag: "Verbindung zum Server" vorhanden?
-
+private:
+ SwSectionData m_Data;
- SW_DLLPRIVATE void _SetHiddenFlag( BOOL bHidden, BOOL bCondition );
- SW_DLLPRIVATE void _SetProtectFlag( BOOL bFlag ) { bProtectFlag = bFlag; }
- /* SW_DLLPUBLIC */ BOOL _IsProtect() const;
+ SwServerObjectRef m_RefObj; // set if DataServer
+ ::sfx2::SvBaseLinkRef m_RefLink;
- // --> FME 2004-06-22 #114856# edit in readonly sections
- void _SetEditInReadonlyFlag( BOOL bFlag ) { bEditInReadonlyFlag = bFlag; }
- BOOL _IsEditInReadonly() const;
- // <--
+ SW_DLLPRIVATE void ImplSetHiddenFlag(
+ bool const bHidden, bool const bCondition);
public:
TYPEINFO(); // rtti
- SwSection( SectionType eType, const String& rName,
- SwSectionFmt* pFmt = 0 );
- ~SwSection();
+ SwSection(SectionType const eType, String const& rName,
+ SwSectionFmt & rFormat);
+ virtual ~SwSection();
- // kopiere nur die Daten der Section!
- // Ableitung bleibt (beim Left) erhalten.
- SwSection& operator=( const SwSection& );
- BOOL operator==( const SwSection& rCmp ) const;
+ bool DataEquals(SwSectionData const& rCmp) const;
- const String& GetName() const { return sSectionNm; }
- void SetName( const String& rName ) { sSectionNm = rName; }
- SectionType GetType() const { return eType; }
- void SetType( SectionType eNew ) { eType = eNew; }
+ void SetSectionData(SwSectionData const& rData);
+
+ String const& GetSectionName() const { return m_Data.GetSectionName(); }
+ void SetSectionName(String const& rName){ m_Data.SetSectionName(rName); }
+ SectionType GetType() const { return m_Data.GetType(); }
+ void SetType(SectionType const eType) { return m_Data.SetType(eType); }
SwSectionFmt* GetFmt() { return (SwSectionFmt*)pRegisteredIn; }
SwSectionFmt* GetFmt() const { return (SwSectionFmt*)pRegisteredIn; }
@@ -140,78 +200,76 @@ public:
// setze die Hidden/Protected -> gesamten Baum updaten !
// (Attribute/Flags werden gesetzt/erfragt)
- BOOL IsHidden() const { return bHidden; }
- BOOL IsProtect() const { return GetFmt() ? _IsProtect()
- : IsProtectFlag(); }
-
+ bool IsHidden() const { return m_Data.IsHidden(); }
+ void SetHidden (bool const bFlag = true);
+ bool IsProtect() const;
+ void SetProtect(bool const bFlag = true);
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonly()const { return GetFmt() ? _IsEditInReadonly() : IsEditInReadonlyFlag(); }
- void SetEditInReadonly( BOOL bFlag = TRUE );
+ bool IsEditInReadonly() const;
+ void SetEditInReadonly(bool const bFlag = true);
// <--
- void SetHidden( BOOL bFlag = TRUE );
- void SetProtect( BOOL bFlag = TRUE );
-
// erfrage die internen Flags (Zustand inklusive Parents nicht, was
// aktuell an der Section gesetzt ist!!)
- BOOL IsHiddenFlag() const { return bHiddenFlag; }
- BOOL IsProtectFlag() const { return bProtectFlag; }
+ bool IsHiddenFlag() const { return m_Data.IsHiddenFlag(); }
+ bool IsProtectFlag() const { return m_Data.IsProtectFlag(); }
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonlyFlag() const { return bEditInReadonlyFlag; }
+ bool IsEditInReadonlyFlag() const { return m_Data.IsEditInReadonlyFlag(); }
// <--
- void SetCondHidden( BOOL bFlag = TRUE );
- BOOL IsCondHidden() const { return bCondHiddenFlag; }
+ void SetCondHidden(bool const bFlag = true);
+ bool IsCondHidden() const { return m_Data.IsCondHidden(); }
// erfrage (auch ueber die Parents), ob diese Section versteckt sein soll.
BOOL CalcHiddenFlag() const;
inline SwSection* GetParent() const;
- // setze/erfrage die Bedingung
- const String& GetCondition() const { return sCondition; }
- void SetCondition( const String& rNew ) { sCondition = rNew; }
+ String const& GetCondition() const { return m_Data.GetCondition(); }
+ void SetCondition(String const& rNew) { m_Data.SetCondition(rNew); }
- // setze/erfrage den gelinkten FileNamen
const String& GetLinkFileName() const;
- void SetLinkFileName( const String& rNew, const String* pPassWd = 0 );
- // Passwort des gelinkten Files (nur waehrend der Laufzeit gueltig!)
- const String& GetLinkFilePassWd() const { return sLinkFilePassWd; }
- void SetLinkFilePassWd( const String& rS ) { sLinkFilePassWd = rS; }
+ void SetLinkFileName(String const& rNew, String const*const pPassWd = 0);
+ // password of linked file (only valid during runtime!)
+ String const& GetLinkFilePassword() const
+ { return m_Data.GetLinkFilePassword(); }
+ void SetLinkFilePassword(String const& rS)
+ { m_Data.SetLinkFilePassword(rS); }
// get / set password of this section
- const ::com::sun::star::uno::Sequence <sal_Int8>&
- GetPasswd() const { return aPasswd; }
- void SetPasswd( const ::com::sun::star::uno::Sequence <sal_Int8>& rNew )
- { aPasswd = rNew; }
+ ::com::sun::star::uno::Sequence<sal_Int8> const& GetPassword() const
+ { return m_Data.GetPassword(); }
+ void SetPassword(::com::sun::star::uno::Sequence <sal_Int8> const& rNew)
+ { m_Data.SetPassword(rNew); }
// Daten Server-Methoden
void SetRefObject( SwServerObject* pObj );
- const SwServerObject* GetObject() const { return &refObj; }
- SwServerObject* GetObject() { return &refObj; }
- BOOL IsServer() const { return refObj.Is(); }
+ const SwServerObject* GetObject() const { return & m_RefObj; }
+ SwServerObject* GetObject() { return & m_RefObj; }
+ bool IsServer() const { return m_RefObj.Is(); }
// Methoden fuer gelinkte Bereiche
- USHORT GetUpdateType() const { return refLink->GetUpdateMode(); }
- void SetUpdateType( USHORT nType ) { refLink->SetUpdateMode( nType ); }
+ USHORT GetUpdateType() const { return m_RefLink->GetUpdateMode(); }
+ void SetUpdateType(USHORT const nType )
+ { m_RefLink->SetUpdateMode(nType); }
- BOOL IsConnected() const { return refLink.Is(); }
- void UpdateNow() { refLink->Update(); }
- void Disconnect() { refLink->Disconnect(); }
+ bool IsConnected() const { return m_RefLink.Is(); }
+ void UpdateNow() { m_RefLink->Update(); }
+ void Disconnect() { m_RefLink->Disconnect(); }
- const ::sfx2::SvBaseLink& GetBaseLink() const { return *refLink; }
- ::sfx2::SvBaseLink& GetBaseLink() { return *refLink; }
+ const ::sfx2::SvBaseLink& GetBaseLink() const { return *m_RefLink; }
+ ::sfx2::SvBaseLink& GetBaseLink() { return *m_RefLink; }
void CreateLink( LinkCreateType eType );
void MakeChildLinksVisible( const SwSectionNode& rSectNd );
- BOOL IsLinkType() const
- { return DDE_LINK_SECTION == eType || FILE_LINK_SECTION == eType; }
+ bool IsLinkType() const { return m_Data.IsLinkType(); }
// Flags fuer UI - Verbindung geklappt?
- BOOL IsConnectFlag() const { return bConnectFlag; }
- void SetConnectFlag( BOOL bFlag = TRUE ) { bConnectFlag = bFlag; }
+ bool IsConnectFlag() const { return m_Data.IsConnectFlag(); }
+ void SetConnectFlag(bool const bFlag = true)
+ { m_Data.SetConnectFlag(bFlag); }
// return the TOX base class if the section is a TOX section
const SwTOXBase* GetTOXBase() const;
@@ -219,16 +277,15 @@ public:
// --> OD 2007-02-14 #b6521322#
void BreakLink();
// <--
-private:
- // privater Constructor, weil nie kopiert werden darf !!
- SwSection( const SwSection& );
- // @@@ but copy assignment "SwSection & operator= ( const SwSection& )" is public? @@@
+
};
enum SectionSort { SORTSECT_NOT, SORTSECT_NAME, SORTSECT_POS };
-class SW_DLLPUBLIC SwSectionFmt : public SwFrmFmt
+class SW_DLLPUBLIC SwSectionFmt
+ : public SwFrmFmt
+ , public ::sfx2::Metadatable
{
friend class SwDoc;
@@ -239,7 +296,6 @@ class SW_DLLPUBLIC SwSectionFmt : public SwFrmFmt
::com::sun::star::uno::WeakReference<
::com::sun::star::text::XTextSection> m_wXTextSection;
- /* SW_DLLPUBLIC */ SwSection* _GetSection() const;
SW_DLLPRIVATE void UpdateParent(); // Parent wurde veraendert
protected:
@@ -259,7 +315,7 @@ public:
// erfrage vom Format Informationen
virtual BOOL GetInfo( SfxPoolItem& ) const;
- SwSection* GetSection() const { return (SwSection*)_GetSection(); }
+ SwSection* GetSection() const;
inline SwSectionFmt* GetParent() const;
inline SwSection* GetParentSection() const;
@@ -274,9 +330,10 @@ public:
// befindet.
BOOL IsInNodesArr() const;
- SwSectionNode* GetSectionNode( BOOL bAlways = FALSE );
- const SwSectionNode* GetSectionNode( BOOL bAlways = FALSE ) const
- { return ((SwSectionFmt*)this)->GetSectionNode( bAlways ); }
+ SwSectionNode* GetSectionNode(bool const bEvenIfInUndo = false);
+ const SwSectionNode* GetSectionNode(bool const bEvenIfInUndo = false) const
+ { return const_cast<SwSectionFmt *>(this)
+ ->GetSectionNode(bEvenIfInUndo); }
// ist die Section eine gueltige fuers GlobalDocument?
const SwSection* GetGlobalDocSection() const;
@@ -288,6 +345,14 @@ public:
::com::sun::star::text::XTextSection> const& xTextSection)
{ m_wXTextSection = xTextSection; }
+ // sfx2::Metadatable
+ virtual ::sfx2::IXmlIdRegistry& GetRegistry();
+ virtual bool IsInClipboard() const;
+ virtual bool IsInUndo() const;
+ virtual bool IsInContent() const;
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::rdf::XMetadatable > MakeUnoObject();
+
};
// -------------- inlines ---------------------------------
@@ -314,7 +379,9 @@ inline SwSection* SwSectionFmt::GetParentSection() const
SwSectionFmt* pParent = GetParent();
SwSection* pRet = 0;
if( pParent )
- pRet = pParent->_GetSection();
+ {
+ pRet = pParent->GetSection();
+ }
return pRet;
}
diff --git a/sw/inc/sw_primitivetypes2d.hxx b/sw/inc/sw_primitivetypes2d.hxx
index 8102b69872a1..12e245791f4c 100644
--- a/sw/inc/sw_primitivetypes2d.hxx
+++ b/sw/inc/sw_primitivetypes2d.hxx
@@ -34,9 +34,9 @@
//////////////////////////////////////////////////////////////////////////////
-#define PRIMITIVE2D_ID_SWVIRTFLYDRAWOBJPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SW| 0)
-#define PRIMITIVE2D_ID_SWPOSTITANKORPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 1)
-#define PRIMITIVE2D_ID_SWPOSTITSHADOWPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 2)
+#define PRIMITIVE2D_ID_SWVIRTFLYDRAWOBJPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SW| 0)
+#define PRIMITIVE2D_ID_SWSIDEBARANCHORPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 1)
+#define PRIMITIVE2D_ID_SWSIDEBARSHADOWPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 2)
//////////////////////////////////////////////////////////////////////////////
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index 824e3269e1a5..d189f3c31349 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -73,7 +73,7 @@ class SwForm;
struct CurTOXType;
class SwTOXDescription;
class SwTOXBase;
-class SwSection;
+class SwSectionData;
struct SwDBData;
class SwField;
class Printer;
@@ -194,7 +194,7 @@ public:
class AbstractInsertSectionTabDialog : public VclAbstractDialog //add for SwInsertSectionTabDialog
{
public:
- virtual void SetSection(const SwSection& rSect) = 0;
+ virtual void SetSectionData(SwSectionData const& rSect) = 0;
};
class AbstractSwWordCountDialog : public VclAbstractDialog
diff --git a/sw/inc/undobj.hxx b/sw/inc/undobj.hxx
index b5298895317d..1c78914efbe7 100644
--- a/sw/inc/undobj.hxx
+++ b/sw/inc/undobj.hxx
@@ -24,8 +24,18 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#ifndef _UNDOBJ_HXX
-#define _UNDOBJ_HXX
+#ifndef SW_UNDOBJ_HXX
+#define SW_UNDOBJ_HXX
+
+// --> OD 2006-11-01 #130889#
+#include <vector>
+// <--
+#include <memory>
+
+#include <boost/shared_ptr.hpp>
+
+#include <com/sun/star/uno/Sequence.h>
+
#include <tools/mempool.hxx>
#ifndef _SVSTDARR_HXX
#define _SVSTDARR_USHORTS
@@ -36,23 +46,16 @@
#include <svl/svstdarr.hxx>
#endif
#include <svl/itemset.hxx>
-#include <com/sun/star/uno/Sequence.h>
+
+#include <svx/svdundo.hxx> // #111827#
+
#include <numrule.hxx>
#include <itabenum.hxx>
#include <format.hxx>
#include <SwRewriter.hxx>
-#include <svx/svdundo.hxx> // #111827#
-
#include <swundo.hxx>
-
#include <IMark.hxx>
#include <IDocumentContentOperations.hxx>
-// --> OD 2006-11-01 #130889#
-#include <vector>
-// <--
-
-#include <boost/shared_ptr.hpp>
-#include <memory>
class SwUndoIter;
@@ -71,8 +74,9 @@ class SwTableBox;
struct SwSortOptions;
class SwFrmFmt;
class SwHistoryBookmark;
-class SwSection;
+class SwSectionData;
class SwSectionFmt;
+class SwTOXBase;
class SvxTabStopItem;
class SwDDEFieldType;
class Graphic;
@@ -112,15 +116,6 @@ namespace utl {
class TransliterationWrapper;
}
-#ifdef DBG_UTIL
-class Writer;
-class SwUndo;
-#define OUT_UNDOBJ( name ) \
- friend Writer& OutUndo_ ## name( Writer&, const SwUndo& );
-#else
-#define OUT_UNDOBJ( name )
-#endif
-
const String UNDO_ARG1("$1", RTL_TEXTENCODING_ASCII_US);
const String UNDO_ARG2("$2", RTL_TEXTENCODING_ASCII_US);
@@ -244,7 +239,6 @@ protected:
public:
SwUndoSaveCntnt();
~SwUndoSaveCntnt();
- OUT_UNDOBJ( SaveCntnt )
};
@@ -271,7 +265,6 @@ public:
const SwHistory* GetHistory() const { return pHistory; }
SwHistory* GetHistory() { return pHistory; }
- OUT_UNDOBJ( SaveSection )
};
@@ -320,7 +313,6 @@ public:
// Setzen vom End-Undo-Offset geschieht im Doc::EndUndo
USHORT GetEndOffset() const { return nEndOffset; }
void SetEndOffset( USHORT n ) { nEndOffset = n; }
- OUT_UNDOBJ( Start )
};
class SwUndoEnd: public SwUndo
@@ -352,7 +344,6 @@ public:
// Setzen vom Start-Undo-Offset geschieht im Doc::EndUndo
void SetSttOffset(USHORT _nSttOffSet) { nSttOffset = _nSttOffSet; }
USHORT GetSttOffset() const { return nSttOffset; }
- OUT_UNDOBJ( End )
};
class SwUndoInsert: public SwUndo, private SwUndoSaveCntnt
@@ -402,7 +393,6 @@ public:
virtual SwRewriter GetRewriter() const;
BOOL CanGrouping( const SwPosition&, sal_Unicode cIns );
- OUT_UNDOBJ( Insert )
DECL_FIXEDMEMPOOL_NEWDEL(SwUndoInsert)
};
@@ -472,8 +462,6 @@ public:
xub_StrLen ContentStart() const { return nSttCntnt; }
BOOL IsDelFullPara() const { return bDelFullPara; }
- OUT_UNDOBJ( Delete )
-
DECL_FIXEDMEMPOOL_NEWDEL(SwUndoDelete)
};
@@ -509,7 +497,6 @@ public:
virtual SwRewriter GetRewriter() const;
BOOL CanGrouping( SwDoc*, SwPosition&, sal_Unicode cIns );
- OUT_UNDOBJ( Overwrite )
};
@@ -528,7 +515,6 @@ public:
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
void SetTblFlag() { bTblFlag = TRUE; }
- OUT_UNDOBJ( SplitNode )
};
@@ -567,7 +553,6 @@ public:
void SetMoveRedlines( bool b ) { bMoveRedlines = b; }
- OUT_UNDOBJ( Move )
};
@@ -593,7 +578,6 @@ public:
SwHistory& GetHistory() { return *m_pHistory; }
- OUT_UNDOBJ( InsAttr )
};
class SwUndoResetAttr : public SwUndo, private SwUndRng
@@ -613,7 +597,6 @@ public:
SwHistory& GetHistory() { return *m_pHistory; }
- OUT_UNDOBJ( ResetAttr )
};
class SwUndoFmtAttr : public SwUndo
@@ -659,8 +642,6 @@ public:
virtual void Repeat( SwUndoIter& );
virtual SwRewriter GetRewriter() const;
- OUT_UNDOBJ( InsFmtAttr )
-
void PutAttr( const SfxPoolItem& rItem );
SwFmt* GetFmt( SwDoc& rDoc ); // checks if it is still in the Doc!
};
@@ -757,7 +738,7 @@ public:
virtual SwRewriter GetRewriter() const;
SwHistory* GetHistory() { return pHistory; }
- OUT_UNDOBJ( SetFmtColl )
+
};
@@ -775,7 +756,6 @@ public:
SwHistory& GetHistory() { return *m_pHistory; }
- OUT_UNDOBJ( MoveLeftMargin )
};
// Basis-Klasse fuer Insert von Dokument, Glossaries und Kopieren
@@ -801,21 +781,18 @@ public:
// setze den Destination-Bereich nach dem Einlesen.
void SetInsertRange( const SwPaM&, BOOL bScanFlys = TRUE,
BOOL bSttWasTxtNd = TRUE );
- OUT_UNDOBJ( Inserts )
};
class SwUndoInsDoc : public SwUndoInserts
{
public:
SwUndoInsDoc( const SwPaM& );
- OUT_UNDOBJ( InsDoc )
};
class SwUndoCpyDoc : public SwUndoInserts
{
public:
SwUndoCpyDoc( const SwPaM& );
- OUT_UNDOBJ( Copy )
};
class SwUndoInsTbl : public SwUndo
@@ -842,7 +819,6 @@ public:
virtual SwRewriter GetRewriter() const;
- OUT_UNDOBJ( InsTable )
};
class SwUndoTxtToTbl : public SwUndo, public SwUndRng
@@ -867,7 +843,6 @@ public:
SwHistory& GetHistory(); // wird ggfs. angelegt
void AddFillBox( const SwTableBox& rBox );
- OUT_UNDOBJ( TextToTable )
};
class SwUndoTblToTxt : public SwUndo
@@ -893,7 +868,6 @@ public:
void SetRange( const SwNodeRange& );
void AddBoxPos( SwDoc& rDoc, ULONG nNdIdx, ULONG nEndIdx,
xub_StrLen nCntntIdx = STRING_MAXLEN);
- OUT_UNDOBJ( TableToText )
};
class SwUndoAttrTbl : public SwUndo
@@ -906,7 +880,6 @@ public:
virtual ~SwUndoAttrTbl();
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( SetTableAttr )
};
class SwUndoTblAutoFmt : public SwUndo
@@ -924,7 +897,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
void SaveBoxCntnt( const SwTableBox& rBox );
- OUT_UNDOBJ( TableAutoFmt )
};
class SwUndoTblNdsChg : public SwUndo
@@ -974,7 +946,6 @@ public:
nRelDiff = (USHORT)nRelDif;
}
- OUT_UNDOBJ( TblNodesChg )
};
class SwUndoTblMerge : public SwUndo, private SwUndRng
@@ -1000,7 +971,6 @@ public:
void SaveCollection( const SwTableBox& rBox );
- OUT_UNDOBJ( TblMerge )
};
@@ -1028,7 +998,6 @@ public:
void SetNumFmt( ULONG nNewNumFmtIdx, const double& rNewNumber )
{ nFmtIdx = nNewNumFmtIdx; fNum = rNewNumber; }
void SetBox( const SwTableBox& rBox );
- OUT_UNDOBJ( TblNumFmt )
};
class _UndoTblCpyTbl_Entries;
@@ -1053,7 +1022,6 @@ public:
BOOL IsEmpty() const;
BOOL InsertRow( SwTable& rTbl, const SwSelBoxes& rBoxes, USHORT nCnt );
- OUT_UNDOBJ( TblCpyTbl )
};
class SwUndoCpyTbl : public SwUndo
@@ -1067,7 +1035,6 @@ public:
virtual void Redo( SwUndoIter& );
void SetTableSttIdx( ULONG nIdx ) { nTblNode = nIdx; }
- OUT_UNDOBJ( CpyTbl )
};
class SwUndoSplitTbl : public SwUndo
@@ -1146,7 +1113,6 @@ public:
SwUndoDelBookmark( const ::sw::mark::IMark& );
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( DelBookmark )
};
class SwUndoInsBookmark : public SwUndoBookmark
@@ -1155,7 +1121,6 @@ public:
SwUndoInsBookmark( const ::sw::mark::IMark& );
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( InsBookmark )
};
@@ -1214,7 +1179,6 @@ public:
void Insert( const String& rOrgPos, const String& rNewPos );
void Insert( ULONG nOrgPos, ULONG nNewPos );
- OUT_UNDOBJ( Sort )
};
@@ -1244,7 +1208,6 @@ public:
virtual void Undo( SwUndoIter& ) = 0;
virtual void Redo( SwUndoIter& ) = 0;
- OUT_UNDOBJ( FlyBase )
};
class SwUndoInsLayFmt : public SwUndoFlyBase
@@ -1261,7 +1224,6 @@ public:
String GetComment() const;
- OUT_UNDOBJ( InsLayFmt )
};
class SwUndoDelLayFmt : public SwUndoFlyBase
@@ -1278,7 +1240,6 @@ public:
virtual SwRewriter GetRewriter() const;
- OUT_UNDOBJ( DelLayFmt )
};
@@ -1355,7 +1316,6 @@ public:
BOOL IsFull() const
{ return ((USHRT_MAX / sizeof( void* )) - 50 ) < aArr.Count(); }
- OUT_UNDOBJ( Replace )
};
@@ -1372,7 +1332,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( SwUndoTblHeadline )
};
@@ -1380,57 +1339,36 @@ public:
class SwUndoInsSection : public SwUndo, private SwUndRng
{
- SwHistory* pHistory;
- SwSection* pSection;
- SwRedlineData* pRedlData;
- SfxItemSet* pAttr;
- ULONG nSectNodePos;
- BOOL bSplitAtStt : 1;
- BOOL bSplitAtEnd : 1;
- BOOL bUpdateFtn : 1;
+private:
+ const ::std::auto_ptr<SwSectionData> m_pSectionData;
+ const ::std::auto_ptr<SwTOXBase> m_pTOXBase; /// set iff section is TOX
+ const ::std::auto_ptr<SfxItemSet> m_pAttrSet;
+ ::std::auto_ptr<SwHistory> m_pHistory;
+ ::std::auto_ptr<SwRedlineData> m_pRedlData;
+ ULONG m_nSectionNodePos;
+ bool m_bSplitAtStart : 1;
+ bool m_bSplitAtEnd : 1;
+ bool m_bUpdateFtn : 1;
void Join( SwDoc& rDoc, ULONG nNode );
public:
- SwUndoInsSection( const SwPaM&, const SwSection&,
- const SfxItemSet* pSet );
+ SwUndoInsSection(SwPaM const&, SwSectionData const&,
+ SfxItemSet const*const pSet, SwTOXBase const*const pTOXBase);
virtual ~SwUndoInsSection();
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( SwUndoInsSection )
- void SetSectNdPos( ULONG nPos ) { nSectNodePos = nPos; }
- void SaveSplitNode( SwTxtNode* pTxtNd, BOOL bAtStt );
- void SetUpdtFtnFlag( BOOL bFlag ) { bUpdateFtn = bFlag; }
+ void SetSectNdPos(ULONG const nPos) { m_nSectionNodePos = nPos; }
+ void SaveSplitNode(SwTxtNode *const pTxtNd, bool const bAtStart);
+ void SetUpdtFtnFlag(bool const bFlag) { m_bUpdateFtn = bFlag; }
};
-class SwUndoDelSection : public SwUndo
-{
- ULONG nSttNd, nEndNd;
- SwSection* pSection;
- SfxItemSet* pAttr;
-public:
- SwUndoDelSection( const SwSectionFmt& );
- virtual ~SwUndoDelSection();
- virtual void Undo( SwUndoIter& );
- virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( SwUndoDelSection )
-};
+SW_DLLPRIVATE SwUndo * MakeUndoDelSection(SwSectionFmt const&);
+
+SW_DLLPRIVATE SwUndo * MakeUndoUpdateSection(SwSectionFmt const&, bool const);
-class SwUndoChgSection : public SwUndo
-{
- ULONG nSttNd;
- SwSection* pSection;
- SfxItemSet* pAttr;
- BOOL bOnlyAttrChgd;
-public:
- SwUndoChgSection( const SwSectionFmt&, BOOL bOnlyAttrChgd );
- virtual ~SwUndoChgSection();
- virtual void Undo( SwUndoIter& );
- virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( SwUndoChgSection )
-};
//------------ Undo von verschieben/stufen von Gliederung ----------------
@@ -1442,7 +1380,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( SwUndoOutlineLeftRight )
};
//--------------------------------------------------------------------
@@ -1458,7 +1395,6 @@ public:
virtual ~SwUndoDefaultAttr();
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( DefaultAttr )
};
//--------------------------------------------------------------------
@@ -1490,7 +1426,6 @@ public:
void SetLRSpaceEndPos();
- OUT_UNDOBJ( InsNum )
};
class SwUndoDelNum : public SwUndo, private SwUndRng
@@ -1509,7 +1444,6 @@ public:
void AddNode( const SwTxtNode& rNd, BOOL bResetLRSpace );
SwHistory* GetHistory() { return pHistory; }
- OUT_UNDOBJ( DelNum )
};
class SwUndoMoveNum : public SwUndo, private SwUndRng
@@ -1522,7 +1456,6 @@ public:
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
void SetStartNode( ULONG nValue ) { nNewStt = nValue; }
- OUT_UNDOBJ( MoveNum )
};
class SwUndoNumUpDown : public SwUndo, private SwUndRng
@@ -1533,7 +1466,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( NumUpDown )
};
class SwUndoNumOrNoNum : public SwUndo
@@ -1547,7 +1479,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( NumOrNoNum )
};
class SwUndoNumRuleStart : public SwUndo
@@ -1562,7 +1493,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( NumRuleStart )
};
//--------------------------------------------------------------------
diff --git a/sw/inc/unocrsrhelper.hxx b/sw/inc/unocrsrhelper.hxx
index e3ced236d10c..7ca06ee09391 100644
--- a/sw/inc/unocrsrhelper.hxx
+++ b/sw/inc/unocrsrhelper.hxx
@@ -55,6 +55,9 @@ namespace com{ namespace sun{ namespace star{
namespace beans{
struct PropertyValue;
}
+ namespace text {
+ class XTextContent;
+ }
}}}
/* -----------------03.12.98 12:16-------------------
@@ -84,6 +87,10 @@ namespace SwUnoCursorHelper
bool FillValue( USHORT nWhichId, USHORT nMemberId, const com::sun::star::uno::Any*& pAny );
};
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent >
+ GetNestedTextContent(SwTxtNode & rTextNode, xub_StrLen const nIndex,
+ bool const bParent);
+
sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
, SwPaM& rPam
, com::sun::star::uno::Any *pAny
diff --git a/sw/inc/unoidx.hxx b/sw/inc/unoidx.hxx
index c545250783cb..fe42330685a6 100644
--- a/sw/inc/unoidx.hxx
+++ b/sw/inc/unoidx.hxx
@@ -36,6 +36,8 @@
#include <cppuhelper/implbase4.hxx>
#include <cppuhelper/implbase5.hxx>
+#include <sfx2/Metadatable.hxx>
+
#include <unocoll.hxx>
#include <toxe.hxx>
@@ -48,8 +50,9 @@ class SwTOXType;
*
* --------------------------------------------------*/
-typedef ::cppu::WeakImplHelper5
-< ::com::sun::star::lang::XUnoTunnel
+typedef ::cppu::ImplInheritanceHelper5
+< ::sfx2::MetadatableMixin
+, ::com::sun::star::lang::XUnoTunnel
, ::com::sun::star::lang::XServiceInfo
, ::com::sun::star::beans::XPropertySet
, ::com::sun::star::container::XNamed
@@ -81,6 +84,11 @@ public:
::com::sun::star::text::XDocumentIndex>
CreateXDocumentIndex(SwDoc & rDoc, SwTOXBaseSection const& rSection);
+ // MetadatableMixin
+ virtual ::sfx2::Metadatable* GetCoreObject();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ GetModel();
+
static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
// XUnoTunnel
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index 46087df2b62c..0ea5fa9db598 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -805,9 +805,8 @@ enum SwPropNameIds
/* 0737 */ UNO_NAME_DESCRIPTION,
// <--
/* 0738 */ UNO_NAME_META, // #i91565#
-/* 0739 */ UNO_NAME_IS_TEMPLATE,
-/* 0740 */ UNO_NAME_VBA_DOCOBJ,
-/* 0741 */ SW_PROPNAME_END
+/* 0739 */ UNO_NAME_NESTED_TEXT_CONTENT, // #i109601#
+/* 0740 */ SW_PROPNAME_END
};
diff --git a/sw/inc/unosection.hxx b/sw/inc/unosection.hxx
index e5c189c26af0..e54bdd5775af 100644
--- a/sw/inc/unosection.hxx
+++ b/sw/inc/unosection.hxx
@@ -39,6 +39,8 @@
#include <cppuhelper/implbase7.hxx>
+#include <sfx2/Metadatable.hxx>
+
#include <unobaseclass.hxx>
@@ -52,8 +54,9 @@ class SwSectionFmt;
struct SwTextSectionProperties_Impl;
-typedef ::cppu::WeakImplHelper7
-< ::com::sun::star::lang::XUnoTunnel
+typedef ::cppu::ImplInheritanceHelper7
+< ::sfx2::MetadatableMixin
+, ::com::sun::star::lang::XUnoTunnel
, ::com::sun::star::lang::XServiceInfo
, ::com::sun::star::beans::XPropertySet
, ::com::sun::star::beans::XPropertyState
@@ -84,6 +87,11 @@ public:
CreateXTextSection(SwSectionFmt *const pFmt = 0,
const bool bIndexHeader = false);
+ // MetadatableMixin
+ virtual ::sfx2::Metadatable* GetCoreObject();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ GetModel();
+
static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId();
// XUnoTunnel
diff --git a/sw/inc/unotextmarkup.hxx b/sw/inc/unotextmarkup.hxx
index c0b6f3a7e048..98bb3416d385 100644
--- a/sw/inc/unotextmarkup.hxx
+++ b/sw/inc/unotextmarkup.hxx
@@ -42,7 +42,6 @@ namespace com { namespace sun { namespace star { namespace container {
} } } }
class SwTxtNode;
-class SwWrongList;
class SfxPoolItem;
/** Implementation of the css::text::XTextMarkup interface
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index 700b50121675..78909e69e7ce 100755
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -77,19 +77,15 @@ struct ShellResource;
class SwRegionRects;
class SwFrm;
class SvtAccessibilityOptions;
-// OD 12.12.2002 #103492#
class SwPagePreviewLayout;
-// --> OD 2005-12-01 #i27138#
class SwTxtFrm;
-// <--
class BitmapEx;
struct SwAccessibilityOptions;
class Region;
class SwPostItMgr;
-
-// #i74769#
class SdrPaintWindow;
+class SwAccessibleMap;
namespace vcl
{
@@ -264,7 +260,7 @@ public:
sal_Bool SmoothScroll( long lXDiff, long lYDiff, const Rectangle* );//Browser
void EnableSmooth( sal_Bool b ) { bEnableSmooth = b; }
- const SwRect &VisArea() const { return aVisArea; }
+ const SwRect& VisArea() const { return aVisArea; }
//Es wird, wenn notwendig, soweit gescrollt, dass das
//uebergebene Rect im sichtbaren Ausschnitt liegt.
void MakeVisible( const SwRect & );
@@ -557,9 +553,11 @@ public:
*/
void InvalidateAccessibleParaTextSelection();
- /** invalidate attributes for paragraphs
+ /** invalidate attributes for paragraphs and paragraph's characters
OD 2009-01-06 #i88069#
+ OD 2010-02-16 #i104008# - usage also for changes of the attributes of
+ paragraph's characters.
@author OD
@@ -568,6 +566,8 @@ public:
*/
void InvalidateAccessibleParaAttrs( const SwTxtFrm& rTxtFrm );
+ SwAccessibleMap* GetAccessibleMap();
+
ViewShell( ViewShell&, Window *pWin = 0, OutputDevice *pOut = 0,
long nFlags = 0 );
ViewShell( SwDoc& rDoc, Window *pWin,
diff --git a/sw/qa/complex/writer/TextPortionEnumerationTest.java b/sw/qa/complex/writer/TextPortionEnumerationTest.java
index 72e9664aaab4..2eda02bfa518 100755
--- a/sw/qa/complex/writer/TextPortionEnumerationTest.java
+++ b/sw/qa/complex/writer/TextPortionEnumerationTest.java
@@ -34,12 +34,16 @@ import com.sun.star.uno.XComponentContext;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.NoSupportException;
import com.sun.star.beans.XPropertySet;
import com.sun.star.beans.XPropertySetInfo;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.Pair;
import com.sun.star.beans.StringPair;
import com.sun.star.container.XNamed;
+import com.sun.star.container.XChild;
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XNameAccess;
import com.sun.star.container.XContentEnumerationAccess;
import com.sun.star.container.XEnumerationAccess;
import com.sun.star.container.XEnumeration;
@@ -56,10 +60,16 @@ import com.sun.star.text.XSentenceCursor;
import com.sun.star.text.XParagraphCursor;
import com.sun.star.text.XFootnote;
import com.sun.star.text.XTextField;
+import com.sun.star.text.XBookmarksSupplier;
+import com.sun.star.text.XTextSectionsSupplier;
+import com.sun.star.text.XDocumentIndexesSupplier;
import com.sun.star.text.TextContentAnchorType;
import static com.sun.star.text.TextContentAnchorType.*;
import static com.sun.star.text.ControlCharacter.*;
import com.sun.star.rdf.XMetadatable;
+import com.sun.star.rdf.Statement;
+import com.sun.star.rdf.XDocumentRepository;
+import com.sun.star.rdf.XRepositorySupplier;
import java.util.Map;
import java.util.HashMap;
@@ -976,7 +986,7 @@ abstract class Inserter
xPropSet.setPropertyValue("RubyText", rubytext);
}
- void insertMeta(XTextCursor xCursor, StringPair xmlid)
+ XTextContent insertMeta(XTextCursor xCursor, StringPair xmlid)
throws Exception
{
XTextContent xContent = makeMeta();
@@ -984,6 +994,7 @@ abstract class Inserter
XMetadatable xMetadatable = (XMetadatable)
UnoRuntime.queryInterface(XMetadatable.class, xContent);
xMetadatable.setMetadataReference(xmlid);
+ return xContent;
}
XTextContent makeMeta() throws Exception
@@ -995,14 +1006,15 @@ abstract class Inserter
return xContent;
}
- void insertMetaField(XTextCursor xCursor, StringPair xmlid)
+ XTextField insertMetaField(XTextCursor xCursor, StringPair xmlid)
throws Exception
{
- XTextContent xContent = makeMetaField();
+ XTextField xContent = makeMetaField();
xContent.attach(xCursor);
XMetadatable xMetadatable = (XMetadatable)
UnoRuntime.queryInterface(XMetadatable.class, xContent);
xMetadatable.setMetadataReference(xmlid);
+ return xContent;
}
XTextField makeMetaField() throws Exception
@@ -1165,15 +1177,16 @@ class RangeInserter extends Inserter
}
*/
- void insertRange(Range range) throws Exception
+ XTextContent insertRange(Range range) throws Exception
{
m_xCursor.gotoStartOfParagraph(false);
m_xCursor.goRight(range.getStart(), false);
m_xCursor.goRight(range.getExtent(), true);
- insertNode(m_xCursor, range.getNode());
+ return insertNode(m_xCursor, range.getNode());
}
- void insertNode(XParagraphCursor xCursor, TreeNode node) throws Exception
+ XTextContent insertNode(XParagraphCursor xCursor, TreeNode node)
+ throws Exception
{
String type = node.getType();
if (type.equals("Bookmark")) {
@@ -1196,10 +1209,10 @@ class RangeInserter extends Inserter
insertRuby(xCursor, ruby.getRubyText());
} else if (type.equals("InContentMetadata")) {
MetaNode meta = (MetaNode) node;
- insertMeta(xCursor, meta.getXmlId());
+ return insertMeta(xCursor, meta.getXmlId());
} else if (type.equals("MetadataField")) {
MetaFieldNode meta = (MetaFieldNode) node;
- insertMetaField(xCursor, meta.getXmlId());
+ return insertMetaField(xCursor, meta.getXmlId());
} else if (type.equals("Text")) {
TextNode text = (TextNode) node;
insertText(xCursor, text.getContent());
@@ -1220,6 +1233,7 @@ class RangeInserter extends Inserter
} else {
throw new RuntimeException("unexpected type: " + type);
}
+ return null;
}
}
@@ -1306,6 +1320,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
"testRange5",
"testRange6",
"testRange7",
+ "testMetaXChild",
"testMetaXText",
"testMetaXTextCursor",
"testMetaXTextAttachToxMark",
@@ -1316,6 +1331,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
"testMetaFieldXTextField",
"testMetaFieldXPropertySet",
"testLoadStore",
+ "testLoadStoreXmlid",
};
}
@@ -1640,12 +1656,28 @@ public class TextPortionEnumerationTest extends ComplexTestCase
public void testRefMark3() throws Exception
{
+ // BUG: #i107672# (non-deterministic; depends on pointer ordering)
String name1 = mkName("refmark");
String name2 = mkName("refmark");
+ String name3 = mkName("refmark");
+ String name4 = mkName("refmark");
+ String name5 = mkName("refmark");
+ String name6 = mkName("refmark");
+ String name7 = mkName("refmark");
TreeNode root = new TreeNode();
root.appendChild( new ReferenceMarkStartNode(name1) );
root.appendChild( new ReferenceMarkStartNode(name2) );
+ root.appendChild( new ReferenceMarkStartNode(name3) );
+ root.appendChild( new ReferenceMarkStartNode(name4) );
+ root.appendChild( new ReferenceMarkStartNode(name5) );
+ root.appendChild( new ReferenceMarkStartNode(name6) );
+ root.appendChild( new ReferenceMarkStartNode(name7) );
root.appendChild( new TextNode("abc") );
+ root.appendChild( new ReferenceMarkEndNode(name7) );
+ root.appendChild( new ReferenceMarkEndNode(name6) );
+ root.appendChild( new ReferenceMarkEndNode(name5) );
+ root.appendChild( new ReferenceMarkEndNode(name4) );
+ root.appendChild( new ReferenceMarkEndNode(name3) );
root.appendChild( new ReferenceMarkEndNode(name2) );
root.appendChild( new ReferenceMarkEndNode(name1) );
root.appendChild( new TextNode("de") );
@@ -1665,12 +1697,28 @@ public class TextPortionEnumerationTest extends ComplexTestCase
public void testToxMark3() throws Exception
{
+ // BUG: #i107672# (non-deterministic; depends on pointer ordering)
String name1 = mkName("toxmark");
String name2 = mkName("toxmark");
+ String name3 = mkName("toxmark");
+ String name4 = mkName("toxmark");
+ String name5 = mkName("toxmark");
+ String name6 = mkName("toxmark");
+ String name7 = mkName("toxmark");
TreeNode root = new TreeNode();
root.appendChild( new DocumentIndexMarkStartNode(name1) );
root.appendChild( new DocumentIndexMarkStartNode(name2) );
+ root.appendChild( new DocumentIndexMarkStartNode(name3) );
+ root.appendChild( new DocumentIndexMarkStartNode(name4) );
+ root.appendChild( new DocumentIndexMarkStartNode(name5) );
+ root.appendChild( new DocumentIndexMarkStartNode(name6) );
+ root.appendChild( new DocumentIndexMarkStartNode(name7) );
root.appendChild( new TextNode("abc") );
+ root.appendChild( new DocumentIndexMarkEndNode(name7) );
+ root.appendChild( new DocumentIndexMarkEndNode(name6) );
+ root.appendChild( new DocumentIndexMarkEndNode(name5) );
+ root.appendChild( new DocumentIndexMarkEndNode(name4) );
+ root.appendChild( new DocumentIndexMarkEndNode(name3) );
root.appendChild( new DocumentIndexMarkEndNode(name2) );
root.appendChild( new DocumentIndexMarkEndNode(name1) );
root.appendChild( new TextNode("de") );
@@ -2898,6 +2946,136 @@ public class TextPortionEnumerationTest extends ComplexTestCase
/* TODO: test partial selection, test UNDO/REDO */
+ // #i109601# NestedTextContent and XChild
+ public void testMetaXChild() throws Exception
+ {
+ StringPair id1 = new StringPair("content.xml", mkName("id"));
+ StringPair id2 = new StringPair("content.xml", mkName("id"));
+ StringPair id3 = new StringPair("content.xml", mkName("id"));
+ StringPair id4 = new StringPair("content.xml", mkName("id"));
+ StringPair id5 = new StringPair("content.xml", mkName("id"));
+ StringPair id6 = new StringPair("content.xml", mkName("id"));
+ TreeNode meta1 = new MetaNode(id1);
+ TreeNode meta2 = new MetaNode(id2);
+ TreeNode meta3 = new MetaFieldNode(id3);
+ TreeNode meta4 = new MetaNode(id4);
+ TreeNode meta5 = new MetaNode(id5);
+ TreeNode meta6 = new MetaFieldNode(id6);
+ TreeNode root = new TreeNode()
+ .appendChild( meta1.dup()
+ .appendChild( new TextNode("1") ) )
+ .appendChild( new TextNode("2") )
+ .appendChild( meta2.dup()
+ .appendChild( meta3.dup()
+ .appendChild( new TextNode("34") )
+ .appendChild( meta4.dup()
+ .appendChild( new TextNode("56") ) )
+ .appendChild( meta5.dup() )
+ .appendChild( new TextNode("7") ) ) )
+ .appendChild( new TextNode("8") )
+ .appendChild( meta6.dup()
+ .appendChild( new TextNode("9") ) );
+
+ RangeInserter inserter = new RangeInserter(m_xDoc);
+ TreeNode text = new TextNode("123456789");
+ inserter.insertRange( new Range(0, 0, text) );
+ XTextContent xMeta1 = inserter.insertRange( new Range(0, 1, meta1) );
+ XTextContent xMeta2 = inserter.insertRange( new Range(3, 8, meta2) );
+ XTextContent xMeta3 = inserter.insertRange( new Range(4, 9, meta3) );
+ XTextContent xMeta4 = inserter.insertRange( new Range(7, 9, meta4) );
+ XTextContent xMeta5 = inserter.insertRange( new Range(10, 10, meta5) );
+ XTextContent xMeta6 = inserter.insertRange( new Range(13, 14, meta6) );
+
+ doTest(root, false);
+
+ XText xDocText = m_xDoc.getText();
+ XTextCursor xDocTextCursor = xDocText.createTextCursor();
+ XParagraphCursor xParagraphCursor = (XParagraphCursor)
+ UnoRuntime.queryInterface(XParagraphCursor.class, xDocTextCursor);
+ xParagraphCursor.gotoNextParagraph(false); // second paragraph
+ // X12XX34X56X78X9
+ // 1 23 4 5 6
+ // 1 452 6
+ // 3
+ StringPair [] nestedTextContent = new StringPair[] {
+ null,
+ id1,
+ id1,
+ null,
+ id2,
+ id3,
+ id3,
+ id3,
+ id4,
+ id4,
+ id4,
+ id5,
+ id3,
+ null,
+ id6,
+ id6,
+ };
+ XPropertySet xPropertySet = (XPropertySet)
+ UnoRuntime.queryInterface(XPropertySet.class, xDocTextCursor);
+ for (int i = 0; i < nestedTextContent.length; ++i) {
+ Object oNTC = xPropertySet.getPropertyValue("NestedTextContent");
+ XTextContent xNTC = (XTextContent)
+ UnoRuntime.queryInterface(XTextContent.class, oNTC);
+ if (null == nestedTextContent[i]) {
+ assure("unexpected NestedTextContent at: " + i, null == xNTC);
+ } else {
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xNTC);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("wrong NestedTextContent at: " + i,
+ MetaNode.eq(nestedTextContent[i], xmlid));
+ }
+ xDocTextCursor.goRight((short)1, false);
+ }
+
+ XChild xChild1 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta1);
+ XChild xChild2 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta2);
+ XChild xChild3 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta3);
+ XChild xChild4 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta4);
+ XChild xChild5 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta5);
+ XChild xChild6 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta6);
+ try {
+ xChild1.setParent(xChild4);
+ assure("setParent(): allowed?", false);
+ } catch (NoSupportException e) { /* expected */ }
+ assure("getParent(): not null", xChild1.getParent() == null);
+ assure("getParent(): not null", xChild2.getParent() == null);
+ assure("getParent(): not null", xChild6.getParent() == null);
+ {
+ Object xParent3 = xChild3.getParent();
+ assure("getParent(): null", null != xParent3);
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xParent3);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("getParent(): wrong", MetaNode.eq(xmlid, id2));
+ }{
+ Object xParent4 = xChild4.getParent();
+ assure("getParent(): null", null != xParent4);
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xParent4);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("getParent(): wrong", MetaNode.eq(xmlid, id3));
+ }{
+ Object xParent5 = xChild5.getParent();
+ assure("getParent(): null", null != xParent5);
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xParent5);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("getParent(): wrong", MetaNode.eq(xmlid, id3));
+ }
+ }
+
/** test SwXMeta XText interface */
public void testMetaXText() throws Exception
{
@@ -3685,7 +3863,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
public void testLoadStore() throws Exception
{
- XComponent xComp = null;
+ XTextDocument xComp = null;
String filename = "TESTMETA.odt";
String file;
try {
@@ -3693,10 +3871,12 @@ public class TextPortionEnumerationTest extends ComplexTestCase
xComp = doLoad(file);
if (xComp != null)
{
+ checkLoadMeta(xComp);
file = m_TmpDir + filename;
doStore(xComp, file);
close(xComp);
xComp = doLoad(file);
+ checkLoadMeta(xComp);
}
} finally {
close(xComp);
@@ -3715,7 +3895,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
log.println("...done");
}
- public XComponent doLoad(String file) throws Exception
+ public XTextDocument doLoad(String file) throws Exception
{
XComponent xComp = null;
@@ -3729,14 +3909,20 @@ public class TextPortionEnumerationTest extends ComplexTestCase
xComp = util.DesktopTools.loadDoc(m_xMSF, file, loadProps);
// xComp = util.DesktopTools.getCLoader(m_xMSF).loadComponentFromURL(file, "_blank", 0, loadProps);
-
XTextDocument xTextDoc = (XTextDocument)
UnoRuntime.queryInterface(XTextDocument.class, xComp);
- XText xText = xTextDoc.getText();
+ assure("cannot load: " + file, xTextDoc != null);
log.println("...done");
+ return xTextDoc;
+ }
+
+ public void checkLoadMeta(XTextDocument xTextDoc) throws Exception
+ {
+ XText xText = xTextDoc.getText();
+
log.println("Checking meta(-field)s in loaded test document...");
TreeNode root = new TreeNode()
@@ -3783,8 +3969,199 @@ public class TextPortionEnumerationTest extends ComplexTestCase
doTest(xTextDoc, root, false);
log.println("...done");
+ }
- return xComp;
+ public void testLoadStoreXmlid() throws Exception
+ {
+ XTextDocument xComp = null;
+ String filename = "TESTXMLID.odt";
+ String file;
+ try {
+ file = util.utils.getFullTestURL(filename);
+ xComp = doLoad(file);
+ if (xComp != null)
+ {
+ checkLoadXmlId(xComp);
+ file = m_TmpDir + filename;
+ doStore(xComp, file);
+ close(xComp);
+ xComp = doLoad(file);
+ checkLoadXmlId(xComp);
+ }
+ } finally {
+ close(xComp);
+ }
+ }
+
+ public void checkLoadXmlId(XTextDocument xTextDoc) throws Exception
+ {
+ XText xText = xTextDoc.getText();
+
+ log.println("Checking bookmarks in loaded test document...");
+
+ XRepositorySupplier xRS = (XRepositorySupplier)
+ UnoRuntime.queryInterface(XRepositorySupplier.class, xTextDoc);
+ XDocumentRepository xRepo = (XDocumentRepository)
+ UnoRuntime.queryInterface(XDocumentRepository.class,
+ xRS.getRDFRepository());
+ XBookmarksSupplier xBMS = (XBookmarksSupplier)
+ UnoRuntime.queryInterface(XBookmarksSupplier.class, xTextDoc);
+ XNameAccess xBookmarks = xBMS.getBookmarks();
+ XMetadatable xMark1 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xBookmarks.getByName("mk1"));
+ assure("mark1",
+ eq(xMark1.getMetadataReference(),
+ new StringPair("content.xml", "id90")));
+
+ XMetadatable xMark2 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xBookmarks.getByName("mk2"));
+ Pair<Statement[], Boolean> result = xRepo.getStatementRDFa(xMark2);
+ assure("mark2", (result.First.length == 1)
+ && result.First[0].Subject.getStringValue().equals("uri:foo")
+ && result.First[0].Predicate.getStringValue().equals("uri:bar")
+ && result.First[0].Object.getStringValue().contains("a fooish bar")
+ );
+
+ XMetadatable xMark3 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xBookmarks.getByName("mk3"));
+ assure("mark3",
+ eq(xMark3.getMetadataReference(),
+ new StringPair("content.xml", "id91")));
+
+ log.println("...done");
+
+ log.println("Checking sections in loaded test document...");
+
+ XTextSectionsSupplier xTSS = (XTextSectionsSupplier)
+ UnoRuntime.queryInterface(XTextSectionsSupplier.class, xTextDoc);
+
+ XNameAccess xSections = xTSS.getTextSections();
+
+ XMetadatable xSection1 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Section 1"));
+ assure("idsection1", eq(xSection1.getMetadataReference(),
+ new StringPair("content.xml", "idSection1")));
+
+ XMetadatable xSection2 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Section 2"));
+ assure("idSection2", eq(xSection2.getMetadataReference(),
+ new StringPair("content.xml", "idSection2")));
+
+ XMetadatable xSection3 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Table of Contents1_Head"));
+ assure("idTOCTitle", eq(xSection3.getMetadataReference(),
+ new StringPair("content.xml", "idTOCTitle")));
+
+ XMetadatable xSection4 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Alphabetical Index1_Head"));
+ assure("idAITitle", eq(xSection4.getMetadataReference(),
+ new StringPair("content.xml", "idAITitle")));
+
+ XMetadatable xSection5 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Illustration Index1_Head"));
+ assure("idIITitle", eq(xSection5.getMetadataReference(),
+ new StringPair("content.xml", "idIITitle")));
+
+ XMetadatable xSection6 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Index of Tables1_Head"));
+ assure("idIOTTitle", eq(xSection6.getMetadataReference(),
+ new StringPair("content.xml", "idIOTTitle")));
+
+ XMetadatable xSection7 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("User-Defined1_Head"));
+ assure("idUDTitle", eq(xSection7.getMetadataReference(),
+ new StringPair("content.xml", "idUDTitle")));
+
+ XMetadatable xSection8 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Table of Objects1_Head"));
+ assure("idTOOTitle", eq(xSection8.getMetadataReference(),
+ new StringPair("content.xml", "idTOOTitle")));
+
+ XMetadatable xSection9 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Bibliography1_Head"));
+ assure("idBibTitle", eq(xSection9.getMetadataReference(),
+ new StringPair("content.xml", "idBibTitle")));
+
+ log.println("...done");
+
+ log.println("Checking indexes in loaded test document...");
+
+ XDocumentIndexesSupplier xDIS = (XDocumentIndexesSupplier)
+ UnoRuntime.queryInterface(XDocumentIndexesSupplier.class, xTextDoc);
+ XIndexAccess xIndexesIA = xDIS.getDocumentIndexes();
+ XNameAccess xIndexes =
+ UnoRuntime.queryInterface(XNameAccess.class, xIndexesIA);
+
+ XMetadatable xIndex1 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Table of Contents1"));
+ assure("idTOC", eq(xIndex1.getMetadataReference(),
+ new StringPair("content.xml", "idTOC")));
+ XMetadatable xIndex1s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Table of Contents1"));
+ assure("idTOC", eq(xIndex1s.getMetadataReference(),
+ new StringPair("content.xml", "idTOC")));
+
+ XMetadatable xIndex2 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Alphabetical Index1"));
+ assure("idAI", eq(xIndex2.getMetadataReference(),
+ new StringPair("content.xml", "idAI")));
+ XMetadatable xIndex2s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Alphabetical Index1"));
+ assure("idAI", eq(xIndex2s.getMetadataReference(),
+ new StringPair("content.xml", "idAI")));
+
+ XMetadatable xIndex3 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Illustration Index1"));
+ assure("idII", eq(xIndex3.getMetadataReference(),
+ new StringPair("content.xml", "idII")));
+ XMetadatable xIndex3s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Illustration Index1"));
+ assure("idII", eq(xIndex3s.getMetadataReference(),
+ new StringPair("content.xml", "idII")));
+
+ XMetadatable xIndex4 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Index of Tables1"));
+ assure("idIOT", eq(xIndex4.getMetadataReference(),
+ new StringPair("content.xml", "idIOT")));
+ XMetadatable xIndex4s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Index of Tables1"));
+ assure("idIOT", eq(xIndex4s.getMetadataReference(),
+ new StringPair("content.xml", "idIOT")));
+
+ XMetadatable xIndex5 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("User-Defined1"));
+ assure("idUD", eq(xIndex5.getMetadataReference(),
+ new StringPair("content.xml", "idUD")));
+ XMetadatable xIndex5s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("User-Defined1"));
+ assure("idUD", eq(xIndex5s.getMetadataReference(),
+ new StringPair("content.xml", "idUD")));
+
+ XMetadatable xIndex6 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Table of Objects1"));
+ assure("idTOO", eq(xIndex6.getMetadataReference(),
+ new StringPair("content.xml", "idTOO")));
+ XMetadatable xIndex6s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Table of Objects1"));
+ assure("idTOO", eq(xIndex6s.getMetadataReference(),
+ new StringPair("content.xml", "idTOO")));
+
+ XMetadatable xIndex7 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Bibliography1"));
+ assure("idBib", eq(xIndex7.getMetadataReference(),
+ new StringPair("content.xml", "idBib")));
+ XMetadatable xIndex7s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Bibliography1"));
+ assure("idBib", eq(xIndex7s.getMetadataReference(),
+ new StringPair("content.xml", "idBib")));
+
+ log.println("...done");
}
static void close(XComponent i_comp)
@@ -3863,6 +4240,12 @@ public class TextPortionEnumerationTest extends ComplexTestCase
return new StringPair("content.xml", id);
}
+ static boolean eq(StringPair i_Left, StringPair i_Right)
+ {
+ return ((i_Left.First).equals(i_Right.First)) &&
+ ((i_Left.Second).equals(i_Right.Second));
+ }
+
public void assure(String str, boolean cond) { super.assure(str, cond); }
}
diff --git a/sw/qa/complex/writer/testdocuments/TESTXMLID.odt b/sw/qa/complex/writer/testdocuments/TESTXMLID.odt
new file mode 100644
index 000000000000..063d392a489f
--- /dev/null
+++ b/sw/qa/complex/writer/testdocuments/TESTXMLID.odt
Binary files differ
diff --git a/sw/source/core/SwNumberTree/SwNodeNum.cxx b/sw/source/core/SwNumberTree/SwNodeNum.cxx
index d1113f4fb484..d4a9dc0a07d0 100644
--- a/sw/source/core/SwNumberTree/SwNodeNum.cxx
+++ b/sw/source/core/SwNumberTree/SwNodeNum.cxx
@@ -38,7 +38,7 @@
#include <IDocumentListItems.hxx>
// <--
// --> OD 2010-01-13 #b6912256#
-#include <svl/svstdarr.hxx>
+//#include <svtools/svstdarr.hxx>
#include <doc.hxx>
// <--
diff --git a/sw/source/core/access/acccell.cxx b/sw/source/core/access/acccell.cxx
index b44530f40cca..f4cf864b7217 100644
--- a/sw/source/core/access/acccell.cxx
+++ b/sw/source/core/access/acccell.cxx
@@ -41,6 +41,7 @@
#include <swtable.hxx>
#include "crsrsh.hxx"
#include "viscrs.hxx"
+#include <accfrmobj.hxx>
#include <accfrmobjslist.hxx>
#include "frmfmt.hxx"
#include "cellatr.hxx"
@@ -56,6 +57,7 @@
using namespace ::com::sun::star;
using namespace ::com::sun::star::accessibility;
using ::rtl::OUString;
+using namespace sw::access;
const sal_Char sServiceName[] = "com.sun.star.table.AccessibleCellView";
const sal_Char sImplementationName[] = "com.sun.star.comp.Writer.SwAccessibleCellView";
@@ -83,8 +85,7 @@ sal_Bool SwAccessibleCell::IsSelected()
return bRet;
}
-void SwAccessibleCell::GetStates(
- ::utl::AccessibleStateSetHelper& rStateSet )
+void SwAccessibleCell::GetStates( ::utl::AccessibleStateSetHelper& rStateSet )
{
SwAccessibleContext::GetStates( rStateSet );
@@ -104,11 +105,10 @@ void SwAccessibleCell::GetStates(
}
}
-SwAccessibleCell::SwAccessibleCell(
- SwAccessibleMap *pInitMap,
- const SwCellFrm *pCellFrm ) :
- SwAccessibleContext( pInitMap, AccessibleRole::TABLE_CELL, pCellFrm ),
- bIsSelected( sal_False )
+SwAccessibleCell::SwAccessibleCell( SwAccessibleMap *pInitMap,
+ const SwCellFrm *pCellFrm )
+ : SwAccessibleContext( pInitMap, AccessibleRole::TABLE_CELL, pCellFrm )
+ , bIsSelected( sal_False )
{
vos::OGuard aGuard(Application::GetSolarMutex());
OUString sBoxName( pCellFrm->GetTabBox()->GetName() );
@@ -145,11 +145,11 @@ sal_Bool SwAccessibleCell::_InvalidateChildrenCursorPos( const SwFrm *pFrm )
{
sal_Bool bChanged = sal_False;
- const SwFrmOrObjSList aVisList( GetVisArea(), pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *pFrm, *GetMap() );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
if( pLower )
{
@@ -184,7 +184,7 @@ sal_Bool SwAccessibleCell::_InvalidateChildrenCursorPos( const SwFrm *pFrm )
void SwAccessibleCell::_InvalidateCursorPos()
{
- const SwFrm *pParent = GetParent( GetFrm(), IsInPagePreview() );
+ const SwFrm *pParent = GetParent( SwAccessibleChild(GetFrm()), IsInPagePreview() );
ASSERT( pParent->IsTabFrm(), "parent is not a tab frame" );
const SwTabFrm *pTabFrm = static_cast< const SwTabFrm * >( pParent );
if( pTabFrm->IsFollow() )
@@ -253,21 +253,21 @@ uno::Sequence< OUString > SAL_CALL SwAccessibleCell::getSupportedServiceNames()
void SwAccessibleCell::Dispose( sal_Bool bRecursive )
{
- const SwFrm *pParent = GetParent( GetFrm(), IsInPagePreview() );
+ const SwFrm *pParent = GetParent( SwAccessibleChild(GetFrm()), IsInPagePreview() );
::vos::ORef< SwAccessibleContext > xAccImpl(
GetMap()->GetContextImpl( pParent, sal_False ) );
if( xAccImpl.isValid() )
- xAccImpl->DisposeChild( GetFrm(), bRecursive );
+ xAccImpl->DisposeChild( SwAccessibleChild(GetFrm()), bRecursive );
SwAccessibleContext::Dispose( bRecursive );
}
void SwAccessibleCell::InvalidatePosOrSize( const SwRect& rOldBox )
{
- const SwFrm *pParent = GetParent( GetFrm(), IsInPagePreview() );
+ const SwFrm *pParent = GetParent( SwAccessibleChild(GetFrm()), IsInPagePreview() );
::vos::ORef< SwAccessibleContext > xAccImpl(
GetMap()->GetContextImpl( pParent, sal_False ) );
if( xAccImpl.isValid() )
- xAccImpl->InvalidateChildPosOrSize( GetFrm(), rOldBox );
+ xAccImpl->InvalidateChildPosOrSize( SwAccessibleChild(GetFrm()), rOldBox );
SwAccessibleContext::InvalidatePosOrSize( rOldBox );
}
diff --git a/sw/source/core/access/acccell.hxx b/sw/source/core/access/acccell.hxx
index 4ac0e461c640..db3d7d5fd5cb 100644
--- a/sw/source/core/access/acccell.hxx
+++ b/sw/source/core/access/acccell.hxx
@@ -26,12 +26,12 @@
************************************************************************/
#ifndef _ACCCELL_HXX
#define _ACCCELL_HXX
-#ifndef _ACCCONTEXT_HXX
+
#include "acccontext.hxx"
-#endif
#include <com/sun/star/accessibility/XAccessibleValue.hpp>
class SwCellFrm;
+class SwFrmFmt;
class SwAccessibleCell : public SwAccessibleContext,
::com::sun::star::accessibility::XAccessibleValue
diff --git a/sw/source/core/access/acccontext.cxx b/sw/source/core/access/acccontext.cxx
index 54cf0d61f9e9..1b5e66071b84 100644
--- a/sw/source/core/access/acccontext.cxx
+++ b/sw/source/core/access/acccontext.cxx
@@ -38,8 +38,8 @@
#endif // #if (OSL_DEBUG_LEVEL > 1) && defined TEST_MIB
#include <tools/debug.hxx>
#include <vcl/window.hxx>
-#include "errhdl.hxx"
-#include "swtypes.hxx"
+#include <errhdl.hxx>
+#include <swtypes.hxx>
#include <com/sun/star/accessibility/XAccessible.hpp>
#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
@@ -51,18 +51,22 @@
#include <unotools/accessiblerelationsethelper.hxx>
#include <viewsh.hxx>
#include <crsrsh.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <txtfrm.hxx>
#include <ndtxt.hxx>
+#include <pagefrm.hxx>
+#include <flyfrm.hxx>
+#include <dflyobj.hxx>
#include <pam.hxx>
#include <viewimp.hxx>
#include <accmap.hxx>
#include <accfrmobjslist.hxx>
-#ifndef _ACCCONTEXT_HXX
#include <acccontext.hxx>
-#endif
#include <svx/AccessibleShape.hxx>
#include <comphelper/accessibleeventnotifier.hxx>
+#include <PostItMgr.hxx>
+
+using namespace sw::access;
#if (OSL_DEBUG_LEVEL > 1) && defined TEST_MIB
#define DBG_MSG( _msg ) \
@@ -91,10 +95,10 @@ using ::rtl::OUString;
void SwAccessibleContext::InitStates()
{
- bIsShowingState = IsShowing();
+ bIsShowingState = GetMap() ? IsShowing( *(GetMap()) ) : sal_False;
ViewShell *pVSh = GetMap()->GetShell();
- bIsEditableState = pVSh && IsEditable( pVSh );
+ bIsEditableState = pVSh && IsEditable( pVSh );
bIsOpaqueState = pVSh && IsOpaque( pVSh );
bIsDefuncState = sal_False;
}
@@ -165,21 +169,17 @@ enum Action { NONE, SCROLLED, SCROLLED_WITHIN,
SCROLLED_IN, SCROLLED_OUT };
void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
- const SwRect& rOldVisArea )
+ const SwRect& rOldVisArea )
{
const SwRect& rNewVisArea = GetVisArea();
- SwFrmOrObj aFrm( pFrm );
- sal_Bool bVisibleOnly = aFrm.IsVisibleChildrenOnly();
-
- uno::Reference < XAccessible > xAcc;
+ const bool bVisibleChildrenOnly = SwAccessibleChild( pFrm ).IsVisibleChildrenOnly();
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
+ const SwAccessibleChildSList aList( *pFrm, *(GetMap()) );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
while( aIter != aList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
- const SwFrm *pLower = rLower.GetSwFrm();
- SwRect aBox( rLower.GetBox() );
+ const SwAccessibleChild& rLower = *aIter;
+ const SwRect aBox( rLower.GetBox( *(GetMap()) ) );
if( rLower.IsAccessible( GetShell()->IsPreView() ) )
{
Action eAction = NONE;
@@ -191,20 +191,31 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
}
else
{
- if( bVisibleOnly )
+ if ( bVisibleChildrenOnly &&
+ !rLower.AlwaysIncludeAsChild() )
+ {
eAction = SCROLLED_IN;
+ }
else
+ {
eAction = SCROLLED;
+ }
}
}
else if( aBox.IsOver( rOldVisArea ) )
{
- if( bVisibleOnly )
+ if ( bVisibleChildrenOnly &&
+ !rLower.AlwaysIncludeAsChild() )
+ {
eAction = SCROLLED_OUT;
+ }
else
+ {
eAction = SCROLLED;
+ }
}
- else if( !bVisibleOnly )
+ else if( !bVisibleChildrenOnly ||
+ rLower.AlwaysIncludeAsChild() )
{
// This wouldn't be required if the SwAccessibleFrame,
// wouldn't know about the vis area.
@@ -212,8 +223,11 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
}
if( NONE != eAction )
{
- if( pLower )
+ if ( rLower.GetSwFrm() )
{
+ ASSERT( !rLower.AlwaysIncludeAsChild(),
+ "<SwAccessibleContext::ChildrenScrolled(..)> - always included child not considered!" );
+ const SwFrm* pLower( rLower.GetSwFrm() );
::vos::ORef< SwAccessibleContext > xAccImpl =
GetMap()->GetContextImpl( pLower, SCROLLED_OUT == eAction ||
SCROLLED_IN == eAction );
@@ -242,10 +256,12 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
ChildrenScrolled( pLower, rOldVisArea );
}
}
- else
+ else if ( rLower.GetDrawObject() )
{
+ ASSERT( !rLower.AlwaysIncludeAsChild(),
+ "<SwAccessibleContext::ChildrenScrolled(..)> - always included child not considered!" );
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rLower.GetSdrObject(),
+ GetMap()->GetContextImpl( rLower.GetDrawObject(),
this,
SCROLLED_OUT == eAction ||
SCROLLED_IN == eAction );
@@ -260,7 +276,7 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
GetMap() );
break;
case SCROLLED_IN:
- ScrolledInShape( rLower.GetSdrObject(),
+ ScrolledInShape( rLower.GetDrawObject(),
xAccImpl.getBodyPtr() );
break;
case SCROLLED_OUT:
@@ -268,7 +284,7 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
xAccImpl->ViewForwarderChanged(
::accessibility::IAccessibleViewForwarderListener::VISIBLE_AREA,
GetMap() );
- DisposeShape( rLower.GetSdrObject(),
+ DisposeShape( rLower.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
break;
@@ -277,14 +293,21 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
}
}
}
+ else if ( rLower.GetWindow() )
+ {
+ // nothing to do - as such children are always included as children.
+ ASSERT( rLower.AlwaysIncludeAsChild(),
+ "<SwAccessibleContext::ChildrenScrolled(..)> - not always included child not considered!" );
+ }
}
}
- else if( pLower && (!bVisibleOnly ||
- aBox.IsOver( rOldVisArea ) ||
- aBox.IsOver( rNewVisArea )) )
+ else if ( rLower.GetSwFrm() &&
+ ( !bVisibleChildrenOnly ||
+ aBox.IsOver( rOldVisArea ) ||
+ aBox.IsOver( rNewVisArea ) ) )
{
// There are no unaccessible SdrObjects that need to be notified
- ChildrenScrolled( pLower, rOldVisArea );
+ ChildrenScrolled( rLower.GetSwFrm(), rOldVisArea );
}
++aIter;
}
@@ -297,7 +320,7 @@ void SwAccessibleContext::Scrolled( const SwRect& rOldVisArea )
ChildrenScrolled( GetFrm(), rOldVisArea );
sal_Bool bIsOldShowingState;
- sal_Bool bIsNewShowingState = IsShowing();
+ sal_Bool bIsNewShowingState = IsShowing( *(GetMap()) );
{
vos::OGuard aGuard( aMutex );
bIsOldShowingState = bIsShowingState;
@@ -327,7 +350,7 @@ void SwAccessibleContext::ScrolledIn()
"Vis area of child is wrong. Did it exist already?" );
// Send child event at parent. That's all we have to do here.
- const SwFrm *pParent = GetParent();
+ const SwFrm* pParent = GetParent();
::vos::ORef< SwAccessibleContext > xParentImpl(
GetMap()->GetContextImpl( pParent, sal_False ) );
uno::Reference < XAccessibleContext > xThis( this );
@@ -379,13 +402,13 @@ void SwAccessibleContext::ScrolledOut( const SwRect& rOldVisArea )
void SwAccessibleContext::InvalidateChildrenStates( const SwFrm* _pFrm,
tAccessibleStates _nStates )
{
- const SwFrmOrObjSList aVisList( GetVisArea(), _pFrm );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *_pFrm, *(GetMap()) );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
- const SwFrm *pLower = rLower.GetSwFrm();
+ const SwAccessibleChild& rLower = *aIter;
+ const SwFrm* pLower = rLower.GetSwFrm();
if( pLower )
{
::vos::ORef< SwAccessibleContext > xAccImpl;
@@ -396,10 +419,15 @@ void SwAccessibleContext::InvalidateChildrenStates( const SwFrm* _pFrm,
else
InvalidateChildrenStates( pLower, _nStates );
}
- else
+ else if ( rLower.GetDrawObject() )
{
// TODO: SdrObjects
}
+ else if ( rLower.GetWindow() )
+ {
+ // nothing to do ?
+ }
+
++aIter;
}
}
@@ -408,12 +436,12 @@ void SwAccessibleContext::InvalidateChildrenStates( const SwFrm* _pFrm,
void SwAccessibleContext::DisposeChildren( const SwFrm *pFrm,
sal_Bool bRecursive )
{
- const SwFrmOrObjSList aVisList( GetVisArea(), pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *pFrm, *(GetMap()) );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
- const SwFrm *pLower = rLower.GetSwFrm();
+ const SwAccessibleChild& rLower = *aIter;
+ const SwFrm* pLower = rLower.GetSwFrm();
if( pLower )
{
::vos::ORef< SwAccessibleContext > xAccImpl;
@@ -424,13 +452,17 @@ void SwAccessibleContext::DisposeChildren( const SwFrm *pFrm,
else if( bRecursive )
DisposeChildren( pLower, bRecursive );
}
- else
+ else if ( rLower.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl(
- GetMap()->GetContextImpl( rLower.GetSdrObject(),
+ GetMap()->GetContextImpl( rLower.GetDrawObject(),
this, sal_False ) );
if( xAccImpl.isValid() )
- DisposeShape( rLower.GetSdrObject(), xAccImpl.getBodyPtr() );
+ DisposeShape( rLower.GetDrawObject(), xAccImpl.getBodyPtr() );
+ }
+ else if ( rLower.GetWindow() )
+ {
+ DisposeChild( rLower, sal_False );
}
++aIter;
}
@@ -528,16 +560,14 @@ sal_Bool SwAccessibleContext::IsEditableState()
SwAccessibleContext::SwAccessibleContext( SwAccessibleMap *pM,
sal_Int16 nR,
- const SwFrm *pF ) :
- SwAccessibleFrame( pM->GetVisArea().SVRect(), pF,
- pM->GetShell()->IsPreView() ),
- pMap( pM ),
- nClientId(0),
- nRole( nR ),
- bDisposing( sal_False ),
- // --> OD 2008-03-10 #i85634#
- bRegisteredAtAccessibleMap( true )
- // <--
+ const SwFrm *pF )
+ : SwAccessibleFrame( pM->GetVisArea().SVRect(), pF,
+ pM->GetShell()->IsPreView() )
+ , pMap( pM )
+ , nClientId(0)
+ , nRole( nR )
+ , bDisposing( sal_False )
+ , bRegisteredAtAccessibleMap( true )
{
InitStates();
DBG_MSG_CD( "constructed" )
@@ -548,11 +578,7 @@ SwAccessibleContext::~SwAccessibleContext()
vos::OGuard aGuard(Application::GetSolarMutex());
DBG_MSG_CD( "destructed" )
- // --> OD 2008-03-10 #i85634#
-// if( GetFrm() && GetMap() )
-// GetMap()->RemoveContext( GetFrm() );
RemoveFrmFromAccessibleMap();
- // <--
}
uno::Reference< XAccessibleContext > SAL_CALL
@@ -570,7 +596,7 @@ sal_Int32 SAL_CALL SwAccessibleContext::getAccessibleChildCount( void )
CHECK_FOR_DEFUNC( XAccessibleContext )
- return bDisposing ? 0 : GetChildCount();
+ return bDisposing ? 0 : GetChildCount( *(GetMap()) );
}
uno::Reference< XAccessible> SAL_CALL
@@ -581,7 +607,7 @@ uno::Reference< XAccessible> SAL_CALL
CHECK_FOR_DEFUNC( XAccessibleContext )
- const SwFrmOrObj aChild( GetChild( nIndex ) );
+ const SwAccessibleChild aChild( GetChild( *(GetMap()), nIndex ) );
if( !aChild.IsValid() )
{
uno::Reference < XAccessibleContext > xThis( this );
@@ -602,14 +628,18 @@ uno::Reference< XAccessible> SAL_CALL
xChild = xChildImpl.getBodyPtr();
}
}
- else
+ else if ( aChild.GetDrawObject() )
{
::vos::ORef < ::accessibility::AccessibleShape > xChildImpl(
- GetMap()->GetContextImpl( aChild.GetSdrObject(),
+ GetMap()->GetContextImpl( aChild.GetDrawObject(),
this, !bDisposing ) );
if( xChildImpl.isValid() )
xChild = xChildImpl.getBodyPtr();
}
+ else if ( aChild.GetWindow() )
+ {
+ xChild = aChild.GetWindow()->GetAccessible();
+ }
return xChild;
}
@@ -656,7 +686,7 @@ sal_Int32 SAL_CALL SwAccessibleContext::getAccessibleIndexInParent (void)
GetMap()->GetContextImpl( pUpper, !bDisposing ) );
ASSERT( xAccImpl.isValid() || bDisposing, "no parent found" );
if( xAccImpl.isValid() )
- nIndex = xAccImpl->GetChildIndex( GetFrm() );
+ nIndex = xAccImpl->GetChildIndex( *(GetMap()), SwAccessibleChild(GetFrm()) );
}
return nIndex;
@@ -792,20 +822,24 @@ uno::Reference< XAccessible > SAL_CALL SwAccessibleContext::getAccessibleAtPoint
Point aPixPoint( aPoint.X, aPoint.Y ); // px rel to parent
if( !GetFrm()->IsRootFrm() )
{
- SwRect aLogBounds( GetBounds( GetFrm() ) ); // twip rel to doc root
+ SwRect aLogBounds( GetBounds( *(GetMap()), GetFrm() ) ); // twip rel to doc root
Point aPixPos( GetMap()->CoreToPixel( aLogBounds.SVRect() ).TopLeft() );
aPixPoint.X() += aPixPos.X();
aPixPoint.Y() += aPixPos.Y();
}
- const SwFrmOrObj aChild( GetChildAtPixel( aPixPoint, GetMap() ) );
+ const SwAccessibleChild aChild( GetChildAtPixel( aPixPoint, *(GetMap()) ) );
if( aChild.GetSwFrm() )
{
xAcc = GetMap()->GetContext( aChild.GetSwFrm() );
}
- else if( aChild.GetSdrObject() )
+ else if( aChild.GetDrawObject() )
{
- xAcc = GetMap()->GetContext( aChild.GetSdrObject(), this );
+ xAcc = GetMap()->GetContext( aChild.GetDrawObject(), this );
+ }
+ else if ( aChild.GetWindow() )
+ {
+ xAcc = aChild.GetWindow()->GetAccessible();
}
return xAcc;
@@ -843,7 +877,7 @@ awt::Rectangle SAL_CALL SwAccessibleContext::getBoundsImpl(sal_Bool bRelative)
CHECK_FOR_WINDOW( XAccessibleComponent, pWin && pParent )
- SwRect aLogBounds( GetBounds( GetFrm() ) ); // twip rel to doc root
+ SwRect aLogBounds( GetBounds( *(GetMap()), GetFrm() ) ); // twip rel to doc root
Rectangle aPixBounds( 0, 0, 0, 0 );
if( GetFrm()->IsPageFrm() &&
static_cast < const SwPageFrm * >( GetFrm() )->IsEmptyPage() )
@@ -862,7 +896,7 @@ awt::Rectangle SAL_CALL SwAccessibleContext::getBoundsImpl(sal_Bool bRelative)
aPixBounds = GetMap()->CoreToPixel( aLogBounds.SVRect() );
if( !pParent->IsRootFrm() && bRelative)
{
- SwRect aParentLogBounds( GetBounds( pParent ) ); // twip rel to doc root
+ SwRect aParentLogBounds( GetBounds( *(GetMap()), pParent ) ); // twip rel to doc root
Point aParentPixPos( GetMap()->CoreToPixel( aParentLogBounds.SVRect() ).TopLeft() );
aPixBounds.Move( -aParentPixPos.X(), -aParentPixPos.Y() );
}
@@ -1087,24 +1121,21 @@ void SwAccessibleContext::Dispose( sal_Bool bRecursive )
DBG_MSG_CD( "dispose" )
}
- // --> OD 2008-03-10 #i85634#
-// if( GetFrm() && GetMap() )
-// GetMap()->RemoveContext( GetFrm() );
RemoveFrmFromAccessibleMap();
- // <--
ClearFrm();
pMap = 0;
bDisposing = sal_False;
}
-void SwAccessibleContext::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
+void SwAccessibleContext::DisposeChild( const SwAccessibleChild& rChildFrmOrObj,
sal_Bool bRecursive )
{
vos::OGuard aGuard(Application::GetSolarMutex());
- SwFrmOrObj aFrmOrObj( GetFrm() );
- if( IsShowing( rChildFrmOrObj ) || !aFrmOrObj.IsVisibleChildrenOnly() )
+ if ( IsShowing( *(GetMap()), rChildFrmOrObj ) ||
+ rChildFrmOrObj.AlwaysIncludeAsChild() ||
+ !SwAccessibleChild( GetFrm() ).IsVisibleChildrenOnly() )
{
// If the object could have existed before, than there is nothing to do,
// because no wrapper exists now and therefor no one is interested to
@@ -1116,14 +1147,23 @@ void SwAccessibleContext::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
sal_True );
xAccImpl->Dispose( bRecursive );
}
- else
+ else if ( rChildFrmOrObj.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rChildFrmOrObj.GetSdrObject(),
+ GetMap()->GetContextImpl( rChildFrmOrObj.GetDrawObject(),
this, sal_True );
- DisposeShape( rChildFrmOrObj.GetSdrObject(),
+ DisposeShape( rChildFrmOrObj.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
+ else if ( rChildFrmOrObj.GetWindow() )
+ {
+ AccessibleEventObject aEvent;
+ aEvent.EventId = AccessibleEventId::CHILD;
+ uno::Reference< XAccessible > xAcc =
+ rChildFrmOrObj.GetWindow()->GetAccessible();
+ aEvent.OldValue <<= xAcc;
+ FireAccessibleEvent( aEvent );
+ }
}
else if( bRecursive && rChildFrmOrObj.GetSwFrm() )
DisposeChildren( rChildFrmOrObj.GetSwFrm(), bRecursive );
@@ -1136,7 +1176,7 @@ void SwAccessibleContext::InvalidatePosOrSize( const SwRect& )
ASSERT( GetFrm() && !GetFrm()->Frm().IsEmpty(), "context should have a size" );
sal_Bool bIsOldShowingState;
- sal_Bool bIsNewShowingState = IsShowing();
+ sal_Bool bIsNewShowingState = IsShowing( *(GetMap()) );
{
vos::OGuard aShowingStateGuard( aMutex );
bIsOldShowingState = bIsShowingState;
@@ -1154,8 +1194,8 @@ void SwAccessibleContext::InvalidatePosOrSize( const SwRect& )
FireVisibleDataEvent();
}
- SwFrmOrObj aParent( GetParent() );
- if( !bIsNewShowingState && aParent.IsVisibleChildrenOnly() )
+ if( !bIsNewShowingState &&
+ SwAccessibleChild( GetParent() ).IsVisibleChildrenOnly() )
{
// The frame is now invisible -> dispose it
Dispose( sal_True );
@@ -1167,7 +1207,7 @@ void SwAccessibleContext::InvalidatePosOrSize( const SwRect& )
}
void SwAccessibleContext::InvalidateChildPosOrSize(
- const SwFrmOrObj& rChildFrmOrObj,
+ const SwAccessibleChild& rChildFrmOrObj,
const SwRect& rOldFrm )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1176,15 +1216,21 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
!rChildFrmOrObj.GetSwFrm()->Frm().IsEmpty(),
"child context should have a size" );
- SwFrmOrObj aFrm( GetFrm() );
- sal_Bool bNew = rOldFrm.IsEmpty() ||
- (rOldFrm.Left() == 0 && rOldFrm.Top() == 0);
- if( IsShowing( rChildFrmOrObj ) )
+ if ( rChildFrmOrObj.AlwaysIncludeAsChild() )
+ {
+ // nothing to do;
+ return;
+ }
+
+ const bool bVisibleChildrenOnly = SwAccessibleChild( GetFrm() ).IsVisibleChildrenOnly();
+ const bool bNew = rOldFrm.IsEmpty() ||
+ ( rOldFrm.Left() == 0 && rOldFrm.Top() == 0 );
+ if( IsShowing( *(GetMap()), rChildFrmOrObj ) )
{
// If the object could have existed before, than there is nothing to do,
// because no wrapper exists now and therefor no one is interested to
// get notified of the movement.
- if( bNew || (aFrm.IsVisibleChildrenOnly() && !IsShowing( rOldFrm )) )
+ if( bNew || (bVisibleChildrenOnly && !IsShowing( rOldFrm )) )
{
if( rChildFrmOrObj.GetSwFrm() )
{
@@ -1194,15 +1240,15 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
sal_True );
xAccImpl->ScrolledIn();
}
- else
+ else if ( rChildFrmOrObj.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rChildFrmOrObj.GetSdrObject(),
+ GetMap()->GetContextImpl( rChildFrmOrObj.GetDrawObject(),
this, sal_True );
// --> OD 2004-11-29 #i37790#
if ( xAccImpl.isValid() )
{
- ScrolledInShape( rChildFrmOrObj.GetSdrObject(),
+ ScrolledInShape( rChildFrmOrObj.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
else
@@ -1212,6 +1258,13 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
}
// <--
}
+ else if ( rChildFrmOrObj.GetWindow() )
+ {
+ AccessibleEventObject aEvent;
+ aEvent.EventId = AccessibleEventId::CHILD;
+ aEvent.NewValue <<= (rChildFrmOrObj.GetWindow()->GetAccessible());
+ FireAccessibleEvent( aEvent );
+ }
}
}
else
@@ -1220,7 +1273,7 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
// needs to be send. However, there is no wrapper existing, and so
// no notifications for grandchildren are required. If the are
// grandgrandchildren, they would be notified by the layout.
- if( aFrm.IsVisibleChildrenOnly() &&
+ if( bVisibleChildrenOnly &&
!bNew && IsShowing( rOldFrm ) )
{
if( rChildFrmOrObj.GetSwFrm() )
@@ -1231,14 +1284,19 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
xAccImpl->SetParent( this );
xAccImpl->Dispose( sal_True );
}
- else
+ else if ( rChildFrmOrObj.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rChildFrmOrObj.GetSdrObject(),
+ GetMap()->GetContextImpl( rChildFrmOrObj.GetDrawObject(),
this, sal_True );
- DisposeShape( rChildFrmOrObj.GetSdrObject(),
+ DisposeShape( rChildFrmOrObj.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
+ else if ( rChildFrmOrObj.GetWindow() )
+ {
+ ASSERT( false,
+ "<SwAccessibleContext::InvalidateChildPosOrSize(..)> - not expected to handle dispose of child of type <Window>." );
+ }
}
}
}
@@ -1422,13 +1480,67 @@ OUString SwAccessibleContext::GetResource( sal_uInt16 nResId,
return OUString( sStr );
}
-// --> OD 2008-03-10 #i85634#
void SwAccessibleContext::RemoveFrmFromAccessibleMap()
{
if( bRegisteredAtAccessibleMap && GetFrm() && GetMap() )
GetMap()->RemoveContext( GetFrm() );
}
-// <--
+
+bool SwAccessibleContext::HasAdditionalAccessibleChildren()
+{
+ bool bRet( false );
+
+ if ( GetFrm()->IsTxtFrm() )
+ {
+ SwPostItMgr* pPostItMgr = GetMap()->GetShell()->GetPostItMgr();
+ if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
+ {
+ bRet = pPostItMgr->HasFrmConnectedSidebarWins( *(GetFrm()) );
+ }
+ }
+
+ return bRet;
+}
+/** get additional accessible child by index
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+*/
+Window* SwAccessibleContext::GetAdditionalAccessibleChild( const sal_Int32 nIndex )
+{
+ Window* pAdditionalAccessibleChild( 0 );
+
+ if ( GetFrm()->IsTxtFrm() )
+ {
+ SwPostItMgr* pPostItMgr = GetMap()->GetShell()->GetPostItMgr();
+ if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
+ {
+ pAdditionalAccessibleChild =
+ pPostItMgr->GetSidebarWinForFrmByIndex( *(GetFrm()), nIndex );
+ }
+ }
+
+ return pAdditionalAccessibleChild;
+}
+
+/** get all additional accessible children
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+*/
+void SwAccessibleContext::GetAdditionalAccessibleChildren( std::vector< Window* >* pChildren )
+{
+ if ( GetFrm()->IsTxtFrm() )
+ {
+ SwPostItMgr* pPostItMgr = GetMap()->GetShell()->GetPostItMgr();
+ if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
+ {
+ pPostItMgr->GetAllSidebarWinForFrm( *(GetFrm()), pChildren );
+ }
+ }
+}
#if (OSL_DEBUG_LEVEL > 1) && defined TEST_MIB
void lcl_SwAccessibleContext_DbgMsg( SwAccessibleContext *pThisAcc,
diff --git a/sw/source/core/access/acccontext.hxx b/sw/source/core/access/acccontext.hxx
index 5461995bc400..8bad4ab9074b 100644
--- a/sw/source/core/access/acccontext.hxx
+++ b/sw/source/core/access/acccontext.hxx
@@ -40,8 +40,14 @@ class SwAccessibleMap;
class SwCrsrShell;
class SdrObject;
class SwPaM;
-namespace utl { class AccessibleStateSetHelper; }
-namespace accessibility { class AccessibleShape; }
+namespace utl {
+ class AccessibleStateSetHelper;
+}
+namespace accessibility {
+ class AccessibleShape;
+}
+class SwFmtFld;
+class SwAccessibleChildContainer;
const sal_Char sAccessibleServiceName[] = "com.sun.star.accessibility.Accessible";
@@ -339,13 +345,13 @@ public:
virtual void Dispose( sal_Bool bRecursive = sal_False );
// The child object is not visible an longer and should be destroyed
- virtual void DisposeChild( const SwFrmOrObj& rFrmOrObj, sal_Bool bRecursive );
+ virtual void DisposeChild( const sw::access::SwAccessibleChild& rFrmOrObj, sal_Bool bRecursive );
// The object has been moved by the layout
virtual void InvalidatePosOrSize( const SwRect& rFrm );
// The vhild object has been moved by the layout
- virtual void InvalidateChildPosOrSize( const SwFrmOrObj& rFrmOrObj,
+ virtual void InvalidateChildPosOrSize( const sw::access::SwAccessibleChild& rFrmOrObj,
const SwRect& rFrm );
// The content may have changed (but it hasn't tohave changed)
@@ -381,6 +387,25 @@ public:
*/
void InvalidateAttr();
+ bool HasAdditionalAccessibleChildren();
+
+ /** get additional child by index
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+ */
+ Window* GetAdditionalAccessibleChild( const sal_Int32 nIndex );
+
+ /** get all additional accessible children
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+ */
+ void GetAdditionalAccessibleChildren( std::vector< Window* >* pChildren );
+
+
const ::rtl::OUString& GetName() const { return sName; }
virtual sal_Bool HasCursor(); // required by map to remember that object
diff --git a/sw/source/core/access/accdoc.cxx b/sw/source/core/access/accdoc.cxx
index 614366226df2..e0d3945e0a51 100644
--- a/sw/source/core/access/accdoc.cxx
+++ b/sw/source/core/access/accdoc.cxx
@@ -155,8 +155,10 @@ uno::Reference< XAccessible> SAL_CALL
if( mpChildWin )
{
CHECK_FOR_DEFUNC( XAccessibleContext )
- if( nIndex == GetChildCount() )
+ if ( nIndex == GetChildCount( *(GetMap()) ) )
+ {
return mpChildWin->GetAccessible();
+ }
}
return SwAccessibleContext::getAccessibleChild( nIndex );
diff --git a/sw/source/core/access/accfootnote.hxx b/sw/source/core/access/accfootnote.hxx
index 614e85f9f6b6..1c7330bc694d 100644
--- a/sw/source/core/access/accfootnote.hxx
+++ b/sw/source/core/access/accfootnote.hxx
@@ -26,9 +26,13 @@
************************************************************************/
#ifndef _ACCFOOTNOTE_HXX
#define _ACCFOOTNOTE_HXX
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+
+#include <sal/types.h>
+
+#include <acccontext.hxx>
+
+class SwAccessibleMap;
+class SwFtnFrm;
class SwAccessibleFootnote : public SwAccessibleContext
{
diff --git a/sw/source/core/access/accframe.cxx b/sw/source/core/access/accframe.cxx
index 533cf358a618..043e40bb943b 100644
--- a/sw/source/core/access/accframe.cxx
+++ b/sw/source/core/access/accframe.cxx
@@ -52,22 +52,24 @@
#include <accfrmobjmap.hxx>
#include <accframe.hxx>
+using namespace sw::access;
// Regarding visibilily (or in terms of accessibility: regarding the showing
// state): A frame is visible and therfor contained in the tree if its frame
// size overlaps with the visible area. The bounding box however is the
// frame's paint area.
-sal_Int32 SwAccessibleFrame::GetChildCount( const SwRect& rVisArea,
- const SwFrm *pFrm,
- sal_Bool bInPagePreview )
+/* static */ sal_Int32 SwAccessibleFrame::GetChildCount( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm *pFrm,
+ sal_Bool bInPagePreview )
{
sal_Int32 nCount = 0;
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, *pFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
nCount++;
@@ -75,7 +77,8 @@ sal_Int32 SwAccessibleFrame::GetChildCount( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- nCount += GetChildCount( rVisArea, rLower.GetSwFrm(),
+ nCount += GetChildCount( rAccMap,
+ rVisArea, rLower.GetSwFrm(),
bInPagePreview );
}
++aIter;
@@ -84,23 +87,25 @@ sal_Int32 SwAccessibleFrame::GetChildCount( const SwRect& rVisArea,
return nCount;
}
-SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
- const SwFrm *pFrm,
- sal_Int32& rPos,
- sal_Bool bInPagePreview )
+/* static */ SwAccessibleChild SwAccessibleFrame::GetChild(
+ SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview )
{
- SwFrmOrObj aRet;
+ SwAccessibleChild aRet;
if( rPos >= 0 )
{
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_iterator aIter( aVisMap.begin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_iterator aIter( aVisMap.begin() );
while( aIter != aVisMap.end() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = (*aIter).second;
+ const SwAccessibleChild& rLower = (*aIter).second;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( 0 == rPos )
@@ -111,7 +116,8 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChild( rVisArea, rLower.GetSwFrm(), rPos,
+ aRet = GetChild( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rPos,
bInPagePreview );
}
++aIter;
@@ -121,11 +127,11 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
{
// The unsorted list is sorted enough, because it return lower
// frames in the correct order.
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( 0 == rPos )
@@ -136,7 +142,8 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChild( rVisArea, rLower.GetSwFrm(), rPos,
+ aRet = GetChild( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rPos,
bInPagePreview );
}
++aIter;
@@ -147,22 +154,24 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
return aRet;
}
-sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
- const SwFrm *pFrm,
- const SwFrmOrObj& rChild,
- sal_Int32& rPos,
- sal_Bool bInPagePreview )
+/* static */ sal_Bool SwAccessibleFrame::GetChildIndex(
+ SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ const SwAccessibleChild& rChild,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview )
{
sal_Bool bFound = sal_False;
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_iterator aIter( aVisMap.begin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_iterator aIter( aVisMap.begin() );
while( aIter != aVisMap.end() && !bFound )
{
- const SwFrmOrObj& rLower = (*aIter).second;
+ const SwAccessibleChild& rLower = (*aIter).second;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( rChild == rLower )
@@ -173,7 +182,8 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- bFound = GetChildIndex( rVisArea, rLower.GetSwFrm(), rChild,
+ bFound = GetChildIndex( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rChild,
rPos, bInPagePreview );
}
++aIter;
@@ -183,11 +193,11 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
{
// The unsorted list is sorted enough, because it return lower
// frames in the correct order.
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() && !bFound )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( rChild == rLower )
@@ -198,7 +208,8 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- bFound = GetChildIndex( rVisArea, rLower.GetSwFrm(), rChild,
+ bFound = GetChildIndex( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rChild,
rPos, bInPagePreview );
}
++aIter;
@@ -208,31 +219,31 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
return bFound;
}
-SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
- const SwFrm *pFrm,
+SwAccessibleChild SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
+ const SwFrm& rFrm,
const Point& rPixPos,
sal_Bool bInPagePreview,
- const SwAccessibleMap *pMap )
+ SwAccessibleMap& rAccMap )
{
- SwFrmOrObj aRet;
+ SwAccessibleChild aRet;
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here, and we have to reverse iterate,
// because objects in front should be returned.
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_reverse_iterator aRIter( aVisMap.rbegin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_reverse_iterator aRIter( aVisMap.rbegin() );
while( aRIter != aVisMap.rend() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = (*aRIter).second;
+ const SwAccessibleChild& rLower = (*aRIter).second;
// A frame is returned if it's frame size is inside the visarea
// and the positiion is inside the frame's paint area.
if( rLower.IsAccessible( bInPagePreview ) )
{
- SwRect aLogBounds( rLower.GetBounds( ) );
+ SwRect aLogBounds( rLower.GetBounds( rAccMap ) );
if( !aLogBounds.IsEmpty() )
{
- Rectangle aPixBounds( pMap->CoreToPixel( aLogBounds.SVRect() ) );
+ Rectangle aPixBounds( rAccMap.CoreToPixel( aLogBounds.SVRect() ) );
if( aPixBounds.IsInside( rPixPos ) )
aRet = rLower;
}
@@ -240,8 +251,8 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChildAtPixel( rVisArea, rLower.GetSwFrm(), rPixPos,
- bInPagePreview, pMap );
+ aRet = GetChildAtPixel( rVisArea, *(rLower.GetSwFrm()), rPixPos,
+ bInPagePreview, rAccMap );
}
aRIter++;
}
@@ -251,19 +262,19 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
// The unsorted list is sorted enough, because it returns lower
// frames in the correct order. Morover, we can iterate forward,
// because the lowers don't overlap!
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
// A frame is returned if it's frame size is inside the visarea
// and the positiion is inside the frame's paint area.
if( rLower.IsAccessible( bInPagePreview ) )
{
- SwRect aLogBounds( rLower.GetBounds( ) );
+ SwRect aLogBounds( rLower.GetBounds( rAccMap ) );
if( !aLogBounds.IsEmpty() )
{
- Rectangle aPixBounds( pMap->CoreToPixel( aLogBounds.SVRect() ) );
+ Rectangle aPixBounds( rAccMap.CoreToPixel( aLogBounds.SVRect() ) );
if( aPixBounds.IsInside( rPixPos ) )
aRet = rLower;
}
@@ -271,8 +282,8 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChildAtPixel( rVisArea, rLower.GetSwFrm(), rPixPos,
- bInPagePreview, pMap );
+ aRet = GetChildAtPixel( rVisArea, *(rLower.GetSwFrm()), rPixPos,
+ bInPagePreview, rAccMap );
}
++aIter;
}
@@ -281,18 +292,20 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
return aRet;
}
-void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
- ::std::list< SwFrmOrObj >& rChildren,
- sal_Bool bInPagePreview )
+/* static */ void SwAccessibleFrame::GetChildren( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ ::std::list< SwAccessibleChild >& rChildren,
+ sal_Bool bInPagePreview )
{
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_iterator aIter( aVisMap.begin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_iterator aIter( aVisMap.begin() );
while( aIter != aVisMap.end() )
{
- const SwFrmOrObj& rLower = (*aIter).second;
+ const SwAccessibleChild& rLower = (*aIter).second;
if( rLower.IsAccessible( bInPagePreview ) )
{
rChildren.push_back( rLower );
@@ -300,8 +313,8 @@ void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- GetChildren( rVisArea, rLower.GetSwFrm(), rChildren,
- bInPagePreview );
+ GetChildren( rAccMap, rVisArea, *(rLower.GetSwFrm()),
+ rChildren, bInPagePreview );
}
++aIter;
}
@@ -310,11 +323,11 @@ void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
{
// The unsorted list is sorted enough, because it return lower
// frames in the correct order.
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
rChildren.push_back( rLower );
@@ -322,21 +335,22 @@ void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- GetChildren( rVisArea, rLower.GetSwFrm(), rChildren,
- bInPagePreview );
+ GetChildren( rAccMap, rVisArea, *(rLower.GetSwFrm()),
+ rChildren, bInPagePreview );
}
++aIter;
}
}
}
-SwRect SwAccessibleFrame::GetBounds( const SwFrm *pFrm )
+SwRect SwAccessibleFrame::GetBounds( const SwAccessibleMap& rAccMap,
+ const SwFrm *pFrm )
{
if( !pFrm )
pFrm = GetFrm();
- SwFrmOrObj aFrm( pFrm );
- SwRect aBounds( aFrm.GetBounds().Intersection( maVisArea ) );
+ SwAccessibleChild aFrm( pFrm );
+ SwRect aBounds( aFrm.GetBounds( rAccMap ).Intersection( maVisArea ) );
return aBounds;
}
@@ -359,7 +373,7 @@ sal_Bool SwAccessibleFrame::IsEditable( ViewShell *pVSh ) const
sal_Bool SwAccessibleFrame::IsOpaque( ViewShell *pVSh ) const
{
- SwFrmOrObj aFrm( GetFrm() );
+ SwAccessibleChild aFrm( GetFrm() );
if( !aFrm.GetSwFrm() )
return sal_False;
@@ -423,71 +437,10 @@ SwAccessibleFrame::~SwAccessibleFrame()
{
}
-const SwFrm *SwAccessibleFrame::GetParent( const SwFrmOrObj& rFrmOrObj,
- sal_Bool bInPagePreview )
+/* static */ const SwFrm* SwAccessibleFrame::GetParent( const SwAccessibleChild& rFrmOrObj,
+ sal_Bool bInPagePreview )
{
- SwFrmOrObj aParent;
- const SwFrm *pFrm = rFrmOrObj.GetSwFrm();
- if( pFrm )
- {
- if( pFrm->IsFlyFrm() )
- {
- const SwFlyFrm *pFly = static_cast< const SwFlyFrm *>( pFrm );
- if( pFly->IsFlyInCntFrm() )
- {
- // For FLY_AS_CHAR the parent is the anchor
- aParent = pFly->GetAnchorFrm();
- ASSERT( aParent.IsAccessible( bInPagePreview ),
- "parent is not accessible" );
- }
- else
- {
- // In any other case the parent is the root frm
- // (in page preview, the page frame)
- if( bInPagePreview )
- aParent = pFly->FindPageFrm();
- else
- aParent = pFly->FindRootFrm();
- }
- }
- else
- {
- SwFrmOrObj aUpper( pFrm->GetUpper() );
- while( aUpper.GetSwFrm() && !aUpper.IsAccessible(bInPagePreview) )
- aUpper = aUpper.GetSwFrm()->GetUpper();
- aParent = aUpper;
- }
- }
- else if( rFrmOrObj.GetSdrObject() )
- {
- const SwDrawContact *pContact =
- static_cast< const SwDrawContact* >(
- GetUserCall( rFrmOrObj.GetSdrObject() ) );
- ASSERT( pContact, "sdr contact is missing" );
- if( pContact )
- {
- const SwFrmFmt *pFrmFmt = pContact->GetFmt();
- ASSERT( pFrmFmt, "frame format is missing" );
- if (pFrmFmt && FLY_AS_CHAR == pFrmFmt->GetAnchor().GetAnchorId())
- {
- // For FLY_AS_CHAR the parent is the anchor
- aParent = pContact->GetAnchorFrm();
- ASSERT( aParent.IsAccessible( bInPagePreview ),
- "parent is not accessible" );
-
- }
- else
- {
- // In any other case the parent is the root frm
- if( bInPagePreview )
- aParent = pContact->GetAnchorFrm()->FindPageFrm();
- else
- aParent = pContact->GetAnchorFrm()->FindRootFrm();
- }
- }
- }
-
- return aParent.GetSwFrm();
+ return rFrmOrObj.GetParent( bInPagePreview );
}
String SwAccessibleFrame::GetFormattedPageNumber() const
@@ -501,3 +454,44 @@ String SwAccessibleFrame::GetFormattedPageNumber() const
String sRet( FormatNumber( nPageNum, nFmt ) );
return sRet;
}
+
+sal_Int32 SwAccessibleFrame::GetChildCount( SwAccessibleMap& rAccMap ) const
+{
+ return GetChildCount( rAccMap, maVisArea, mpFrm, IsInPagePreview() );
+}
+
+sw::access::SwAccessibleChild SwAccessibleFrame::GetChild(
+ SwAccessibleMap& rAccMap,
+ sal_Int32 nPos ) const
+{
+ return SwAccessibleFrame::GetChild( rAccMap, maVisArea, *mpFrm, nPos, IsInPagePreview() );
+}
+
+sal_Int32 SwAccessibleFrame::GetChildIndex( SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rChild ) const
+{
+ sal_Int32 nPos = 0;
+ return GetChildIndex( rAccMap, maVisArea, *mpFrm, rChild, nPos, IsInPagePreview() )
+ ? nPos
+ : -1L;
+}
+
+sw::access::SwAccessibleChild SwAccessibleFrame::GetChildAtPixel(
+ const Point& rPos,
+ SwAccessibleMap& rAccMap ) const
+{
+ return GetChildAtPixel( maVisArea, *mpFrm, rPos, IsInPagePreview(), rAccMap );
+}
+
+void SwAccessibleFrame::GetChildren( SwAccessibleMap& rAccMap,
+ ::std::list< sw::access::SwAccessibleChild >& rChildren ) const
+{
+ GetChildren( rAccMap, maVisArea, *mpFrm, rChildren, IsInPagePreview() );
+}
+
+sal_Bool SwAccessibleFrame::IsShowing( const SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rFrmOrObj ) const
+{
+ return IsShowing( rFrmOrObj.GetBox( rAccMap ) );
+}
+
diff --git a/sw/source/core/access/accframe.hxx b/sw/source/core/access/accframe.hxx
index d1b256958fdb..48da1bdbb9cb 100644
--- a/sw/source/core/access/accframe.hxx
+++ b/sw/source/core/access/accframe.hxx
@@ -27,14 +27,22 @@
#ifndef _ACCFRAME_HXX
#define _ACCFRAME_HXX
+#include <swrect.hxx>
+
#include <sal/types.h>
+#include <tools/string.hxx>
#include <list>
#include <accfrmobj.hxx>
-// Any method of this class must be called with an acquired solar mutex!
-
class SwAccessibleMap;
+class SwFrm;
+class ViewShell;
+namespace sw { namespace access {
+ class SwAccessibleChild;
+}}
+
+// Any method of this class must be called with an acquired solar mutex!
class SwAccessibleFrame
{
@@ -45,26 +53,34 @@ class SwAccessibleFrame
protected:
// --> OD 2007-06-29 #i77106#
// method needs to be called by new class <SwAccessibleTableColHeaders>
- static sal_Int32 GetChildCount( const SwRect& rVisArea,
+ static sal_Int32 GetChildCount( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
const SwFrm *pFrm,
sal_Bool bInPagePreview );
private:
- static SwFrmOrObj GetChild( const SwRect& rVisArea,
- const SwFrm *pFrm,
- sal_Int32& rPos,
- sal_Bool bInPagePreview);
- static sal_Bool GetChildIndex( const SwRect& rVisArea,
- const SwFrm *pFrm,
- const SwFrmOrObj& rChild,
- sal_Int32& rPos,
- sal_Bool bInPagePreview );
- static SwFrmOrObj GetChildAtPixel( const SwRect& rVisArea,
- const SwFrm *pFrm,
- const Point& rPos,
- sal_Bool bInPagePreview,
- const SwAccessibleMap *pMap );
- static void GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
- ::std::list< SwFrmOrObj >& rChildren,
+ static sw::access::SwAccessibleChild GetChild( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview);
+
+ static sal_Bool GetChildIndex( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ const sw::access::SwAccessibleChild& rChild,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview );
+
+ static sw::access::SwAccessibleChild GetChildAtPixel( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ const Point& rPos,
+ sal_Bool bInPagePreview,
+ SwAccessibleMap& rAccMap );
+
+ static void GetChildren( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ ::std::list< sw::access::SwAccessibleChild >& rChildren,
sal_Bool bInPagePreview );
protected:
@@ -73,9 +89,10 @@ protected:
sal_Bool IsOpaque( ViewShell *pVSh ) const;
+ sal_Bool IsShowing( const SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rFrmOrObj ) const;
inline sal_Bool IsShowing( const SwRect& rFrm ) const;
- inline sal_Bool IsShowing( const SwFrmOrObj& rFrmOrObj ) const;
- inline sal_Bool IsShowing() const;
+ inline sal_Bool IsShowing( const SwAccessibleMap& rAccMap ) const;
inline sal_Bool IsInPagePreview() const
{
@@ -94,17 +111,20 @@ protected:
public:
// Return the SwFrm this context is attached to.
- const SwFrm *GetFrm() const { return mpFrm; };
-
+ const SwFrm* GetFrm() const { return mpFrm; };
- static const SwFrm *GetParent( const SwFrmOrObj& rFrmOrObj,
+ static const SwFrm* GetParent( const sw::access::SwAccessibleChild& rFrmOrObj,
sal_Bool bInPagePreview );
+ sal_Int32 GetChildIndex( SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rChild ) const;
+
protected:
// Return the bounding box of the frame clipped to the vis area. If
// no frame is specified, use this' frame.
- SwRect GetBounds( const SwFrm *pFrm=0 );
+ SwRect GetBounds( const SwAccessibleMap& rAccMap,
+ const SwFrm *pFrm = 0 );
// Return the upper that has a context attached. This might be
// another one than the immediate upper.
@@ -112,12 +132,13 @@ protected:
// Return the lower count or the nth lower, there the lowers have a
// not be same one as the SwFrm's lowers
- inline sal_Int32 GetChildCount() const;
- inline SwFrmOrObj GetChild( sal_Int32 nPos ) const;
- inline sal_Int32 GetChildIndex( const SwFrmOrObj& rChild ) const;
- inline SwFrmOrObj GetChildAtPixel( const Point& rPos,
- const SwAccessibleMap *pMap ) const;
- inline void GetChildren( ::std::list< SwFrmOrObj >& rChildren ) const;
+ sal_Int32 GetChildCount( SwAccessibleMap& rAccMap ) const;
+ sw::access::SwAccessibleChild GetChild( SwAccessibleMap& rAccMap,
+ sal_Int32 nPos ) const;
+ sw::access::SwAccessibleChild GetChildAtPixel( const Point& rPos,
+ SwAccessibleMap& rAccMap ) const;
+ void GetChildren( SwAccessibleMap& rAccMap,
+ ::std::list< sw::access::SwAccessibleChild >& rChildren ) const;
inline void SetVisArea( const SwRect& rNewVisArea )
{
@@ -138,48 +159,17 @@ inline sal_Bool SwAccessibleFrame::IsShowing( const SwRect& rFrm ) const
return rFrm.IsOver( maVisArea );
}
-inline sal_Bool SwAccessibleFrame::IsShowing( const SwFrmOrObj& rFrmOrObj ) const
-{
- return IsShowing( rFrmOrObj.GetBox() );
-}
-
-inline sal_Bool SwAccessibleFrame::IsShowing() const
+inline sal_Bool SwAccessibleFrame::IsShowing( const SwAccessibleMap& rAccMap ) const
{
- SwFrmOrObj aFrmOrObj( GetFrm() );
- return IsShowing( aFrmOrObj );
+ sw::access::SwAccessibleChild aFrmOrObj( GetFrm() );
+ return IsShowing( rAccMap, aFrmOrObj );
}
inline const SwFrm *SwAccessibleFrame::GetParent() const
{
- SwFrmOrObj aFrmOrObj( GetFrm() );
+ sw::access::SwAccessibleChild aFrmOrObj( GetFrm() );
return GetParent( aFrmOrObj, IsInPagePreview() );
}
-inline sal_Int32 SwAccessibleFrame::GetChildCount() const
-{
- return GetChildCount( maVisArea, mpFrm, IsInPagePreview() );
-}
-
-inline SwFrmOrObj SwAccessibleFrame::GetChild( sal_Int32 nPos ) const
-{
- return GetChild( maVisArea, mpFrm, nPos, IsInPagePreview() );
-}
-
-inline sal_Int32 SwAccessibleFrame::GetChildIndex( const SwFrmOrObj& rChild ) const
-{
- sal_Int32 nPos = 0;
- return GetChildIndex( maVisArea, mpFrm, rChild, nPos, IsInPagePreview() ) ? nPos : -1L;
-}
-
-inline SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const Point& rPos,
- const SwAccessibleMap *pMap ) const
-{
- return GetChildAtPixel( maVisArea, mpFrm, rPos, IsInPagePreview(), pMap );
-}
-
-inline void SwAccessibleFrame::GetChildren( ::std::list< SwFrmOrObj >& rChildren ) const
-{
- GetChildren( maVisArea, mpFrm, rChildren, IsInPagePreview() );
-}
#endif
diff --git a/sw/source/core/access/accframebase.hxx b/sw/source/core/access/accframebase.hxx
index d1623591ad05..faa4bb492697 100644
--- a/sw/source/core/access/accframebase.hxx
+++ b/sw/source/core/access/accframebase.hxx
@@ -26,13 +26,15 @@
************************************************************************/
#ifndef _ACCFRAMEBASE_HXX
#define _ACCFRAMEBASE_HXX
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+
+#include <acccontext.hxx>
+
+#include <calbck.hxx>
class SwFlyFrm;
-class SwAccessibleFrameBase : public SwAccessibleContext, public SwClient
+class SwAccessibleFrameBase : public SwAccessibleContext,
+ public SwClient
{
sal_Bool bIsSelected; // protected by base class mutex
diff --git a/sw/source/core/access/accfrmobj.cxx b/sw/source/core/access/accfrmobj.cxx
index 131610c66f56..47b4007c1496 100644
--- a/sw/source/core/access/accfrmobj.cxx
+++ b/sw/source/core/access/accfrmobj.cxx
@@ -28,38 +28,401 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <accfrmobj.hxx>
+
+#include <accmap.hxx>
+#include <acccontext.hxx>
+#include <viewsh.hxx>
+#include <rootfrm.hxx>
+#include <flyfrm.hxx>
+#include <pagefrm.hxx>
+#include <cellfrm.hxx>
+#include <swtable.hxx>
+#include <dflyobj.hxx>
#include <frmfmt.hxx>
#include <fmtanchr.hxx>
-#include <accfrmobj.hxx>
#include <dcontact.hxx>
-#include <cellfrm.hxx>
-sal_Bool SwFrmOrObj::IsAccessible( sal_Bool bPagePreview ) const
+#include <vcl/window.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace access {
+
+SwAccessibleChild::SwAccessibleChild()
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{}
+
+SwAccessibleChild::SwAccessibleChild( const SdrObject* pDrawObj )
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{
+ Init( pDrawObj );
+}
+
+SwAccessibleChild::SwAccessibleChild( const SwFrm* pFrm )
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{
+ Init( pFrm );
+}
+
+SwAccessibleChild::SwAccessibleChild( Window* pWindow )
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{
+ Init( pWindow );
+}
+
+
+SwAccessibleChild::SwAccessibleChild( const SwFrm* pFrm,
+ const SdrObject* pDrawObj,
+ Window* pWindow )
+{
+ if ( pFrm )
+ {
+ Init( pFrm );
+ }
+ else if ( pDrawObj )
+ {
+ Init( pDrawObj );
+ }
+ else if ( pWindow )
+ {
+ Init( pWindow );
+ }
+ ASSERT( (!pFrm || pFrm == mpFrm) &&
+ (!pDrawObj || pDrawObj == mpDrawObj) &&
+ (!pWindow || pWindow == mpWindow),
+ "invalid frame/object/window combination" );
+
+}
+
+void SwAccessibleChild::Init( const SdrObject* pDrawObj )
+{
+ mpDrawObj = pDrawObj;
+ mpFrm = mpDrawObj && mpDrawObj->ISA(SwVirtFlyDrawObj)
+ ? static_cast < const SwVirtFlyDrawObj * >( mpDrawObj )->GetFlyFrm()
+ : 0;
+ mpWindow = 0;
+}
+
+void SwAccessibleChild::Init( const SwFrm* pFrm )
+{
+ mpFrm = pFrm;
+ mpDrawObj = mpFrm && mpFrm->IsFlyFrm()
+ ? static_cast < const SwFlyFrm * >( mpFrm )->GetVirtDrawObj()
+ : 0;
+ mpWindow = 0;
+}
+
+void SwAccessibleChild::Init( Window* pWindow )
+{
+ mpWindow = pWindow;
+ mpFrm = 0;
+ mpDrawObj = 0;
+}
+
+bool SwAccessibleChild::IsAccessible( sal_Bool bPagePreview ) const
+{
+ bool bRet( false );
+
+ if ( mpFrm )
+ {
+ bRet = mpFrm->IsAccessibleFrm() &&
+ ( !mpFrm->IsCellFrm() ||
+ static_cast<const SwCellFrm *>( mpFrm )->GetTabBox()->GetSttNd() != 0 ) &&
+ !mpFrm->IsInCoveredCell() &&
+ ( bPagePreview ||
+ !mpFrm->IsPageFrm() );
+ }
+ else if ( mpDrawObj )
+ {
+ bRet = true;
+ }
+ else if ( mpWindow )
+ {
+ bRet = true;
+ }
+
+ return bRet;
+}
+
+bool SwAccessibleChild::IsBoundAsChar() const
+{
+ bool bRet( false );
+
+ if ( mpFrm )
+ {
+ bRet = mpFrm->IsFlyFrm() &&
+ static_cast< const SwFlyFrm *>(mpFrm)->IsFlyInCntFrm();
+ }
+ else if ( mpDrawObj )
+ {
+ const SwFrmFmt* mpFrmFmt = ::FindFrmFmt( mpDrawObj );
+ bRet = mpFrmFmt
+ ? (FLY_AS_CHAR == mpFrmFmt->GetAnchor().GetAnchorId())
+ : false;
+ }
+ else if ( mpWindow )
+ {
+ bRet = false;
+ }
+
+ return bRet;
+}
+
+SwAccessibleChild::SwAccessibleChild( const SwAccessibleChild& r )
+ : mpFrm( r.mpFrm )
+ , mpDrawObj( r.mpDrawObj )
+ , mpWindow( r.mpWindow )
+{}
+
+SwAccessibleChild& SwAccessibleChild::operator=( const SwAccessibleChild& r )
+{
+ mpDrawObj = r.mpDrawObj;
+ mpFrm = r.mpFrm;
+ mpWindow = r.mpWindow;
+
+ return *this;
+}
+
+SwAccessibleChild& SwAccessibleChild::operator=( const SdrObject* pDrawObj )
{
- return ( pFrm && pFrm->IsAccessibleFrm() &&
- ( !pFrm->IsCellFrm() ||
- static_cast<const SwCellFrm *>( pFrm )->GetTabBox()->GetSttNd() != 0 ) &&
- !pFrm->IsInCoveredCell() &&
- ( bPagePreview || !pFrm->IsPageFrm() ) ) ||
- pObj;
+ Init( pDrawObj );
+ return *this;
}
-sal_Bool SwFrmOrObj::IsBoundAsChar() const
+SwAccessibleChild& SwAccessibleChild::operator=( const SwFrm* pFrm )
{
- // currently only SwFrms are accessible
- if( pFrm )
+ Init( pFrm );
+ return *this;
+}
+
+SwAccessibleChild& SwAccessibleChild::operator=( Window* pWindow )
+{
+ Init( pWindow );
+ return *this;
+}
+
+bool SwAccessibleChild::operator==( const SwAccessibleChild& r ) const
+{
+ return mpFrm == r.mpFrm &&
+ mpDrawObj == r.mpDrawObj &&
+ mpWindow == r.mpWindow;
+}
+
+bool SwAccessibleChild::IsValid() const
+{
+ return mpFrm != 0 ||
+ mpDrawObj != 0 ||
+ mpWindow != 0;
+}
+
+const SdrObject* SwAccessibleChild::GetDrawObject() const
+{
+ return mpDrawObj;
+}
+
+const SwFrm *SwAccessibleChild::GetSwFrm() const
+{
+ return mpFrm;
+}
+
+Window* SwAccessibleChild::GetWindow() const
+{
+ return mpWindow;
+}
+
+bool SwAccessibleChild::IsVisibleChildrenOnly() const
+{
+ bool bRet( false );
+
+ if ( !mpFrm )
{
- return pFrm->IsFlyFrm() &&
- static_cast< const SwFlyFrm *>(pFrm)->IsFlyInCntFrm();
+ bRet = true;
}
else
{
- const SwFrmFmt *pFrmFmt = pObj ? ::FindFrmFmt( pObj ) : 0;
- return (pFrmFmt)
- ? static_cast<sal_Bool>(FLY_AS_CHAR ==
- pFrmFmt->GetAnchor().GetAnchorId())
- : sal_False;
+ bRet = mpFrm->IsRootFrm() ||
+ !( mpFrm->IsTabFrm() ||
+ mpFrm->IsInTab() ||
+ ( IsBoundAsChar() &&
+ static_cast<const SwFlyFrm*>(mpFrm)->GetAnchorFrm()->IsInTab() ) );
+ }
+
+ return bRet;
+}
+
+SwRect SwAccessibleChild::GetBox( const SwAccessibleMap& rAccMap ) const
+{
+ SwRect aBox;
+
+ if ( mpFrm )
+ {
+ if ( mpFrm->IsPageFrm() &&
+ static_cast< const SwPageFrm * >( mpFrm )->IsEmptyPage() )
+ {
+ aBox = SwRect( mpFrm->Frm().Left(), mpFrm->Frm().Top()-1, 1, 1 );
+ }
+ else if ( mpFrm->IsTabFrm() )
+ {
+ aBox = SwRect( mpFrm->Frm() );
+ aBox.Intersection( mpFrm->GetUpper()->Frm() );
+ }
+ else
+ {
+ aBox = mpFrm->Frm();
+ }
}
+ else if( mpDrawObj )
+ {
+ aBox = SwRect( mpDrawObj->GetCurrentBoundRect() );
+ }
+ else if ( mpWindow )
+ {
+ aBox = SwRect( rAccMap.GetShell()->GetWin()->PixelToLogic(
+ Rectangle( mpWindow->GetPosPixel(),
+ mpWindow->GetSizePixel() ) ) );
}
+ return aBox;
+}
+
+SwRect SwAccessibleChild::GetBounds( const SwAccessibleMap& rAccMap ) const
+{
+ SwRect aBound;
+
+ if( mpFrm )
+ {
+ if( mpFrm->IsPageFrm() &&
+ static_cast< const SwPageFrm * >( mpFrm )->IsEmptyPage() )
+ {
+ aBound = SwRect( mpFrm->Frm().Left(), mpFrm->Frm().Top()-1, 0, 0 );
+ }
+ else
+ aBound = mpFrm->PaintArea();
+ }
+ else if( mpDrawObj )
+ {
+ aBound = GetBox( rAccMap );
+ }
+ else if ( mpWindow )
+ {
+ aBound = GetBox( rAccMap );
+ }
+
+ return aBound;
+}
+
+bool SwAccessibleChild::AlwaysIncludeAsChild() const
+{
+ bool bAlwaysIncludedAsChild( false );
+
+ if ( mpWindow )
+ {
+ bAlwaysIncludedAsChild = true;
+ }
+
+ return bAlwaysIncludedAsChild;
+}
+
+const SwFrm* SwAccessibleChild::GetParent( const sal_Bool bInPagePreview ) const
+{
+ const SwFrm* pParent( 0 );
+
+ if ( mpFrm )
+ {
+ if( mpFrm->IsFlyFrm() )
+ {
+ const SwFlyFrm* pFly = static_cast< const SwFlyFrm *>( mpFrm );
+ if( pFly->IsFlyInCntFrm() )
+ {
+ // For FLY_AS_CHAR the parent is the anchor
+ pParent = pFly->GetAnchorFrm();
+ ASSERT( SwAccessibleChild( pParent ).IsAccessible( bInPagePreview ),
+ "parent is not accessible" );
+ }
+ else
+ {
+ // In any other case the parent is the root frm
+ // (in page preview, the page frame)
+ if( bInPagePreview )
+ pParent = pFly->FindPageFrm();
+ else
+ pParent = pFly->FindRootFrm();
+ }
+ }
+ else
+ {
+ SwAccessibleChild aUpper( mpFrm->GetUpper() );
+ while( aUpper.GetSwFrm() && !aUpper.IsAccessible(bInPagePreview) )
+ {
+ aUpper = aUpper.GetSwFrm()->GetUpper();
+ }
+ pParent = aUpper.GetSwFrm();
+ }
+ }
+ else if( mpDrawObj )
+ {
+ const SwDrawContact *pContact =
+ static_cast< const SwDrawContact* >( GetUserCall( mpDrawObj ) );
+ ASSERT( pContact, "sdr contact is missing" );
+ if( pContact )
+ {
+ const SwFrmFmt *pFrmFmt = pContact->GetFmt();
+ ASSERT( pFrmFmt, "frame format is missing" );
+ if( pFrmFmt && FLY_AS_CHAR == pFrmFmt->GetAnchor().GetAnchorId() )
+ {
+ // For FLY_AS_CHAR the parent is the anchor
+ pParent = pContact->GetAnchorFrm();
+ ASSERT( SwAccessibleChild( pParent ).IsAccessible( bInPagePreview ),
+ "parent is not accessible" );
+
+ }
+ else
+ {
+ // In any other case the parent is the root frm
+ if( bInPagePreview )
+ pParent = pContact->GetAnchorFrm()->FindPageFrm();
+ else
+ pParent = pContact->GetAnchorFrm()->FindRootFrm();
+ }
+ }
+ }
+ else if ( mpWindow )
+ {
+ css::uno::Reference < css::accessibility::XAccessible > xAcc =
+ mpWindow->GetAccessible();
+ if ( xAcc.is() )
+ {
+ css::uno::Reference < css::accessibility::XAccessibleContext > xAccContext =
+ xAcc->getAccessibleContext();
+ if ( xAccContext.is() )
+ {
+ css::uno::Reference < css::accessibility::XAccessible > xAccParent =
+ xAccContext->getAccessibleParent();
+ if ( xAccParent.is() )
+ {
+ SwAccessibleContext* pAccParentImpl =
+ dynamic_cast< SwAccessibleContext *>( xAccParent.get() );
+ if ( pAccParentImpl )
+ {
+ pParent = pAccParentImpl->GetFrm();
+ }
+ }
+ }
+ }
+ }
+
+ return pParent;
+}
+
+} } // eof of namespace sw::access
+
diff --git a/sw/source/core/access/accfrmobj.hxx b/sw/source/core/access/accfrmobj.hxx
index 45414f8cc6e0..76113c62eae3 100644
--- a/sw/source/core/access/accfrmobj.hxx
+++ b/sw/source/core/access/accfrmobj.hxx
@@ -26,192 +26,70 @@
************************************************************************/
#ifndef _ACCFRMOBJ_HXX
#define _ACCFRMOBJ_HXX
-#include <flyfrm.hxx>
-#include <pagefrm.hxx>
-#include <dflyobj.hxx>
-#include <swtable.hxx>
-class SwFrmOrObj
-{
- const SdrObject *pObj;
- const SwFrm *pFrm;
-
- inline void Init( const SdrObject *pO );
- inline void Init( const SwFrm *pF );
-
-public:
-
- inline SwFrmOrObj();
- inline SwFrmOrObj( const SdrObject *pO );
- inline SwFrmOrObj( const SwFrm *pF );
- inline SwFrmOrObj( const SwFrm *pF, const SdrObject *pO );
- inline SwFrmOrObj( const SwFrmOrObj& r );
+#include <sal/types.h>
- inline SwFrmOrObj& operator=( const SwFrmOrObj& r );
- inline SwFrmOrObj& operator=( const SdrObject *pO );
- inline SwFrmOrObj& operator=( const SwFrm *pF );
+class SwAccessibleMap;
+class SwFrm;
+class SdrObject;
+class Window;
+class SwRect;
- inline sal_Bool operator==( const SwFrmOrObj& r ) const;
- inline sal_Bool operator==( const SdrObject *pO ) const;
- inline sal_Bool operator==( const SwFrm *pF ) const;
-
- inline sal_Bool IsValid() const;
-
- inline const SdrObject *GetSdrObject() const;
- inline const SwFrm *GetSwFrm() const;
-
- sal_Bool IsAccessible( sal_Bool bPagePreview ) const;
- sal_Bool IsBoundAsChar() const;
- inline sal_Bool IsVisibleChildrenOnly() const;
- inline SwRect GetBox() const;
- inline SwRect GetBounds() const;
-};
+namespace sw { namespace access {
-inline void SwFrmOrObj::Init( const SdrObject *pO )
+class SwAccessibleChild
{
- pObj = pO;
- // #110094#-1
- pFrm = pObj && pObj->ISA(SwVirtFlyDrawObj)
- ? static_cast < const SwVirtFlyDrawObj * >( pObj )->GetFlyFrm()
- : 0;
-}
-
-inline void SwFrmOrObj::Init( const SwFrm *pF )
-{
- pFrm = pF;
- pObj = pFrm && pFrm->IsFlyFrm()
- ? static_cast < const SwFlyFrm * >( pFrm )->GetVirtDrawObj()
- : 0;
-}
+ public:
+ SwAccessibleChild();
+ explicit SwAccessibleChild( const SdrObject* pDrawObj );
+ explicit SwAccessibleChild( const SwFrm* pFrm );
+ explicit SwAccessibleChild( Window* pWindow );
+ SwAccessibleChild( const SwFrm* pFrm,
+ const SdrObject* pDrawObj,
+ Window* pWindow );
-inline SwFrmOrObj::SwFrmOrObj() :
- pObj( 0 ), pFrm( 0 )
-{}
+ SwAccessibleChild( const SwAccessibleChild& r );
+ SwAccessibleChild& operator=( const SwAccessibleChild& r );
-inline SwFrmOrObj::SwFrmOrObj( const SdrObject *pO )
-{
- Init( pO );
-}
+ SwAccessibleChild& operator=( const SdrObject* pDrawObj );
+ SwAccessibleChild& operator=( const SwFrm* pFrm );
+ SwAccessibleChild& operator=( Window* pWindow );
-inline SwFrmOrObj::SwFrmOrObj( const SwFrm *pF )
-{
- Init( pF );
-}
+ bool operator==( const SwAccessibleChild& r ) const;
-inline SwFrmOrObj::SwFrmOrObj( const SwFrm *pF, const SdrObject *pO )
-{
- if( pF )
- Init( pF );
- else
- Init( pO );
- ASSERT( (!pF || pF == pFrm) && (!pO || pO == pObj),
- "invalid frame/object combination" );
+ bool IsValid() const;
-}
+ const SwFrm* GetSwFrm() const;
+ const SdrObject* GetDrawObject() const;
+ Window* GetWindow() const;
-inline SwFrmOrObj::SwFrmOrObj( const SwFrmOrObj& r ) :
- pObj( r.pObj ), pFrm( r.pFrm )
-{}
+ const SwFrm* GetParent( const sal_Bool bInPagePreview ) const;
-inline SwFrmOrObj& SwFrmOrObj::operator=( const SwFrmOrObj& r )
-{
- pObj = r.pObj;
- pFrm = r.pFrm;
- return *this;
-}
+ bool IsAccessible( sal_Bool bPagePreview ) const;
+ bool IsBoundAsChar() const;
-inline SwFrmOrObj& SwFrmOrObj::operator=( const SdrObject *pO )
-{
- Init( pO );
- return *this;
-}
+ bool IsVisibleChildrenOnly() const;
+ SwRect GetBox( const SwAccessibleMap& rAccMap ) const;
+ SwRect GetBounds( const SwAccessibleMap& rAccMap ) const;
-inline SwFrmOrObj& SwFrmOrObj::operator=( const SwFrm *pF )
-{
- Init( pF );
- return *this;
-}
+ /** indicating, if accessible child is included even, if the corresponding
+ object is not visible.
-inline sal_Bool SwFrmOrObj::operator==( const SwFrmOrObj& r ) const
-{
- return pObj == r.pObj && pFrm == r.pFrm;
-}
-
-inline sal_Bool SwFrmOrObj::operator==( const SdrObject *pO ) const
-{
- return pObj == pO;
-}
-
-inline sal_Bool SwFrmOrObj::operator==( const SwFrm *pF ) const
-{
- return pFrm == pF;
-}
-
-inline sal_Bool SwFrmOrObj::IsValid() const
-{
- return pObj != 0 || pFrm != 0;
-}
+ @author OD
+ */
+ bool AlwaysIncludeAsChild() const;
-inline const SdrObject *SwFrmOrObj::GetSdrObject() const
-{
- return pObj;
-}
-
-inline const SwFrm *SwFrmOrObj::GetSwFrm() const
-{
- return pFrm;
-}
+ private:
+ const SwFrm* mpFrm;
+ const SdrObject* mpDrawObj;
+ Window* mpWindow;
-inline sal_Bool SwFrmOrObj::IsVisibleChildrenOnly() const
-{
- return !pFrm || pFrm->IsRootFrm() ||
- !( pFrm->IsTabFrm() || pFrm->IsInTab() ||
- ( IsBoundAsChar() &&
- static_cast<const SwFlyFrm*>(pFrm)->GetAnchorFrm()->IsInTab()) );
-}
+ void Init( const SdrObject* pDrawObj );
+ void Init( const SwFrm* pFrm );
+ void Init( Window* pWindow );
+};
-inline SwRect SwFrmOrObj::GetBox() const
-{
- if( pFrm )
- {
- if( pFrm->IsPageFrm() &&
- static_cast< const SwPageFrm * >( pFrm )->IsEmptyPage() )
- {
- SwRect aBox( pFrm->Frm().Left(), pFrm->Frm().Top()-1, 1, 1 );
- return aBox;
- }
- else if ( pFrm->IsTabFrm() )
- {
- SwRect aBox( pFrm->Frm() );
- aBox.Intersection( pFrm->GetUpper()->Frm() );
- return aBox;
- }
- else
- return pFrm->Frm();
- }
- else if( pObj )
- return SwRect( pObj->GetCurrentBoundRect() );
- else
- return SwRect();
-}
-
-inline SwRect SwFrmOrObj::GetBounds() const
-{
- if( pFrm )
- {
- if( pFrm->IsPageFrm() &&
- static_cast< const SwPageFrm * >( pFrm )->IsEmptyPage() )
- {
- SwRect aBox( pFrm->Frm().Left(), pFrm->Frm().Top()-1, 0, 0 );
- return aBox;
- }
- else
- return pFrm->PaintArea();
- }
- else if( pObj )
- return SwRect( pObj->GetCurrentBoundRect() );
- return SwRect();
-}
+} } // eof of namespace sw::access
#endif
diff --git a/sw/source/core/access/accfrmobjmap.cxx b/sw/source/core/access/accfrmobjmap.cxx
index 0d1bb40e39fb..11834ee89963 100644
--- a/sw/source/core/access/accfrmobjmap.cxx
+++ b/sw/source/core/access/accfrmobjmap.cxx
@@ -28,95 +28,141 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <accfrmobjmap.hxx>
+#include <accframe.hxx>
+#include <accmap.hxx>
+#include <acccontext.hxx>
+#include <viewsh.hxx>
#include <doc.hxx>
#include <frmfmt.hxx>
#include <pagefrm.hxx>
#include <txtfrm.hxx>
#include <node.hxx>
-// OD 2004-05-24 #i28701#
#include <sortedobjs.hxx>
+#include <anchoredobject.hxx>
-#ifndef _ACCFFRMOBJMAP_HXX
-#include <accfrmobjmap.hxx>
-#endif
-
-::std::pair< SwFrmOrObjMap::iterator, bool > SwFrmOrObjMap::insert(
- sal_uInt32 nPos, const SwFrmOrObj& rLower )
-{
- SwFrmOrObjMapKey aKey( SwFrmOrObjMapKey::TEXT, nPos );
- value_type aEntry( aKey, rLower );
- return _SwFrmOrObjMap::insert( aEntry );
-}
-
-::std::pair< SwFrmOrObjMap::iterator, bool > SwFrmOrObjMap::insert(
- const SdrObject *pObj, const SwFrmOrObj& rLower, const SwDoc *pDoc )
-{
- if( !bLayerIdsValid )
- {
- nHellId = pDoc->GetHellId();
- nControlsId = pDoc->GetControlsId();
- bLayerIdsValid = sal_True;
- }
+#include <svx/svdobj.hxx>
- SdrLayerID nLayer = pObj->GetLayer();
- SwFrmOrObjMapKey::LayerId eLayerId = (nHellId == nLayer)
- ? SwFrmOrObjMapKey::HELL
- : ((nControlsId == nLayer) ? SwFrmOrObjMapKey::CONTROLS
- : SwFrmOrObjMapKey::HEAVEN);
- SwFrmOrObjMapKey aKey( eLayerId, pObj->GetOrdNum() );
- value_type aEntry( aKey, rLower );
- return _SwFrmOrObjMap::insert( aEntry );
-}
+using namespace sw::access;
-SwFrmOrObjMap::SwFrmOrObjMap(
- const SwRect& rVisArea, const SwFrm *pFrm ) :
- bLayerIdsValid( sal_False )
+SwAccessibleChildMap::SwAccessibleChildMap( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap )
+ : nHellId( rAccMap.GetShell()->GetDoc()->GetHellId() )
+ , nControlsId( rAccMap.GetShell()->GetDoc()->GetControlsId() )
{
- SwFrmOrObj aFrm( pFrm );
- sal_Bool bVisibleOnly = aFrm.IsVisibleChildrenOnly();
+ const bool bVisibleChildrenOnly = SwAccessibleChild( &rFrm ).IsVisibleChildrenOnly();
sal_uInt32 nPos = 0;
- SwFrmOrObj aLower( pFrm->GetLower() );
+ SwAccessibleChild aLower( rFrm.GetLower() );
while( aLower.GetSwFrm() )
{
- if( !bVisibleOnly || aLower.GetBox().IsOver( rVisArea ) )
- insert( nPos++, aLower );
+ if ( !bVisibleChildrenOnly ||
+ aLower.AlwaysIncludeAsChild() ||
+ aLower.GetBox( rAccMap ).IsOver( rVisArea ) )
+ {
+ insert( nPos++, SwAccessibleChildMapKey::TEXT, aLower );
+ }
aLower = aLower.GetSwFrm()->GetNext();
}
- if( pFrm->IsPageFrm() )
+ if ( rFrm.IsPageFrm() )
{
- ASSERT( bVisibleOnly, "page frame within tab frame???" );
+ ASSERT( bVisibleChildrenOnly, "page frame within tab frame???" );
const SwPageFrm *pPgFrm =
- static_cast< const SwPageFrm * >( pFrm );
+ static_cast< const SwPageFrm * >( &rFrm );
const SwSortedObjs *pObjs = pPgFrm->GetSortedObjs();
- if( pObjs )
+ if ( pObjs )
{
- const SwDoc *pDoc = pPgFrm->GetFmt()->GetDoc();
for( sal_uInt16 i=0; i<pObjs->Count(); i++ )
{
aLower = (*pObjs)[i]->GetDrawObj();
- if( aLower.GetBox().IsOver( rVisArea ) )
- insert( aLower.GetSdrObject(), aLower, pDoc );
+ if ( aLower.GetBox( rAccMap ).IsOver( rVisArea ) )
+ {
+ insert( aLower.GetDrawObject(), aLower );
+ }
}
}
}
- else if( pFrm->IsTxtFrm() )
+ else if( rFrm.IsTxtFrm() )
{
- const SwDoc *pDoc = static_cast< const SwTxtFrm * >( pFrm )->GetNode()
- ->GetDoc();
- const SwSortedObjs *pObjs = pFrm->GetDrawObjs();
- if( pObjs )
+ const SwSortedObjs *pObjs = rFrm.GetDrawObjs();
+ if ( pObjs )
{
for( sal_uInt16 i=0; i<pObjs->Count(); i++ )
{
aLower = (*pObjs)[i]->GetDrawObj();
- if( aLower.IsBoundAsChar() &&
- (!bVisibleOnly || aLower.GetBox().IsOver( rVisArea )) )
- insert( aLower.GetSdrObject(), aLower, pDoc );
+ if ( aLower.IsBoundAsChar() &&
+ ( !bVisibleChildrenOnly ||
+ aLower.AlwaysIncludeAsChild() ||
+ aLower.GetBox( rAccMap ).IsOver( rVisArea ) ) )
+ {
+ insert( aLower.GetDrawObject(), aLower );
+ }
+ }
+ }
+
+ {
+ ::vos::ORef < SwAccessibleContext > xAccImpl =
+ rAccMap.GetContextImpl( &rFrm, sal_False );
+ if( xAccImpl.isValid() )
+ {
+ SwAccessibleContext* pAccImpl = xAccImpl.getBodyPtr();
+ if ( pAccImpl &&
+ pAccImpl->HasAdditionalAccessibleChildren() )
+ {
+ std::vector< Window* >* pAdditionalChildren =
+ new std::vector< Window* >();
+ pAccImpl->GetAdditionalAccessibleChildren( pAdditionalChildren );
+
+ sal_Int32 nCounter( 0 );
+ for ( std::vector< Window* >::iterator aIter = pAdditionalChildren->begin();
+ aIter != pAdditionalChildren->end();
+ ++aIter )
+ {
+ aLower = (*aIter);
+ insert( ++nCounter, SwAccessibleChildMapKey::XWINDOW, aLower );
+ }
+
+ delete pAdditionalChildren;
+ }
}
}
}
}
+
+::std::pair< SwAccessibleChildMap::iterator, bool > SwAccessibleChildMap::insert(
+ const sal_uInt32 nPos,
+ const SwAccessibleChildMapKey::LayerId eLayerId,
+ const SwAccessibleChild& rLower )
+{
+ SwAccessibleChildMapKey aKey( eLayerId, nPos );
+ value_type aEntry( aKey, rLower );
+ return _SwAccessibleChildMap::insert( aEntry );
+}
+
+::std::pair< SwAccessibleChildMap::iterator, bool > SwAccessibleChildMap::insert(
+ const SdrObject *pObj,
+ const SwAccessibleChild& rLower )
+{
+ const SdrLayerID nLayer = pObj->GetLayer();
+ SwAccessibleChildMapKey::LayerId eLayerId =
+ (nHellId == nLayer)
+ ? SwAccessibleChildMapKey::HELL
+ : ( (nControlsId == nLayer)
+ ? SwAccessibleChildMapKey::CONTROLS
+ : SwAccessibleChildMapKey::HEAVEN );
+ SwAccessibleChildMapKey aKey( eLayerId, pObj->GetOrdNum() );
+ value_type aEntry( aKey, rLower );
+ return _SwAccessibleChildMap::insert( aEntry );
+}
+
+/* static */ sal_Bool SwAccessibleChildMap::IsSortingRequired( const SwFrm& rFrm )
+{
+ return ( rFrm.IsPageFrm() &&
+ static_cast< const SwPageFrm& >( rFrm ).GetSortedObjs() ) ||
+ ( rFrm.IsTxtFrm() &&
+ rFrm.GetDrawObjs() );
+}
diff --git a/sw/source/core/access/accfrmobjmap.hxx b/sw/source/core/access/accfrmobjmap.hxx
index ab474037ef62..91365ed9c258 100644
--- a/sw/source/core/access/accfrmobjmap.hxx
+++ b/sw/source/core/access/accfrmobjmap.hxx
@@ -26,79 +26,71 @@
************************************************************************/
#ifndef _ACCFRMOBJMAP_HXX
#define _ACCFRMOBJMAP_HXX
+
#include <accfrmobj.hxx>
+#include <svx/svdtypes.hxx>
+
#include <map>
+class SwAccessibleMap;
class SwDoc;
+class SwRect;
+class SwFrm;
+class SdrObject;
-class SwFrmOrObjMapKey
+class SwAccessibleChildMapKey
{
public:
- enum LayerId { INVALID, HELL, TEXT, HEAVEN, CONTROLS };
+ enum LayerId { INVALID, HELL, TEXT, HEAVEN, CONTROLS, XWINDOW };
+
+ inline SwAccessibleChildMapKey()
+ : eLayerId( INVALID )
+ , nOrdNum( 0 )
+ {}
+
+ inline SwAccessibleChildMapKey( LayerId eId, sal_uInt32 nOrd )
+ : eLayerId( eId )
+ , nOrdNum( nOrd )
+ {}
+
+ inline bool operator()( const SwAccessibleChildMapKey& r1,
+ const SwAccessibleChildMapKey& r2 ) const
+ {
+ return (r1.eLayerId == r2.eLayerId)
+ ? (r1.nOrdNum < r2.nOrdNum)
+ : (r1.eLayerId < r2.eLayerId);
+ }
+
private:
LayerId eLayerId;
sal_uInt32 nOrdNum;
-public:
-
- inline SwFrmOrObjMapKey();
- inline SwFrmOrObjMapKey( LayerId eId, sal_uInt32 nOrd );
-
- inline sal_Bool operator()( const SwFrmOrObjMapKey& r1,
- const SwFrmOrObjMapKey& r2 ) const;
};
-typedef ::std::map < SwFrmOrObjMapKey, SwFrmOrObj, SwFrmOrObjMapKey >
- _SwFrmOrObjMap;
+typedef ::std::map < SwAccessibleChildMapKey, sw::access::SwAccessibleChild, SwAccessibleChildMapKey >
+ _SwAccessibleChildMap;
-class SwFrmOrObjMap : public _SwFrmOrObjMap
+class SwAccessibleChildMap : public _SwAccessibleChildMap
{
- SdrLayerID nHellId;
- SdrLayerID nControlsId;
- sal_Bool bLayerIdsValid;
+ const SdrLayerID nHellId;
+ const SdrLayerID nControlsId;
- ::std::pair< iterator, bool > insert( sal_uInt32 nPos,
- const SwFrmOrObj& rLower );
- ::std::pair< iterator, bool > insert( const SdrObject *pObj,
- const SwFrmOrObj& rLower,
- const SwDoc *pDoc );
+ ::std::pair< iterator, bool > insert( const sal_uInt32 nPos,
+ const SwAccessibleChildMapKey::LayerId eLayerId,
+ const sw::access::SwAccessibleChild& rLower );
+ ::std::pair< iterator, bool > insert( const SdrObject* pObj,
+ const sw::access::SwAccessibleChild& rLower );
public:
- SwFrmOrObjMap( const SwRect& rVisArea, const SwFrm *pFrm );
+ SwAccessibleChildMap( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap );
- inline static sal_Bool IsSortingRequired( const SwFrm *pFrm );
+ static sal_Bool IsSortingRequired( const SwFrm& rFrm );
};
-inline SwFrmOrObjMapKey::SwFrmOrObjMapKey() :
- eLayerId( INVALID ),
- nOrdNum( 0 )
-{
-}
-
-inline SwFrmOrObjMapKey::SwFrmOrObjMapKey(
- LayerId eId, sal_uInt32 nOrd ) :
- eLayerId( eId ),
- nOrdNum( nOrd )
-{
-}
-
-inline sal_Bool SwFrmOrObjMapKey::operator()(
- const SwFrmOrObjMapKey& r1,
- const SwFrmOrObjMapKey& r2 ) const
-{
- return (r1.eLayerId == r2.eLayerId) ? (r1.nOrdNum < r2.nOrdNum) :
- (r1.eLayerId < r2.eLayerId);
-}
-
-inline sal_Bool SwFrmOrObjMap::IsSortingRequired( const SwFrm *pFrm )
-{
- return ( pFrm->IsPageFrm() &&
- static_cast< const SwPageFrm * >( pFrm )->GetSortedObjs() ) ||
- (pFrm->IsTxtFrm() && pFrm->GetDrawObjs() );
-}
-
#endif
diff --git a/sw/source/core/access/accfrmobjslist.cxx b/sw/source/core/access/accfrmobjslist.cxx
index e23cb6702a70..2f3e8399187a 100644
--- a/sw/source/core/access/accfrmobjslist.cxx
+++ b/sw/source/core/access/accfrmobjslist.cxx
@@ -28,97 +28,146 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <accfrmobjslist.hxx>
+#include <accmap.hxx>
+#include <acccontext.hxx>
#include <pagefrm.hxx>
-// OD 2004-05-24 #i28701#
#include <sortedobjs.hxx>
-#include <accfrmobjslist.hxx>
+#include <anchoredobject.hxx>
+using namespace ::sw::access;
-SwFrmOrObjSList_const_iterator::SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList& rLst, sal_Bool ) :
- rList( rLst ), aCurr( rList.pFrm->GetLower() ), nNextObj( 0 )
+SwAccessibleChildSList_const_iterator::SwAccessibleChildSList_const_iterator(
+ const SwAccessibleChildSList& rLst,
+ SwAccessibleMap& rAccMap )
+ : rList( rLst ),
+ aCurr( rList.GetFrm().GetLower() ),
+ nNextObj( 0 )
{
if( !aCurr.GetSwFrm() )
{
- if( rList.pFrm->IsPageFrm() )
+ const SwFrm& rFrm = rList.GetFrm();
+ if( rFrm.IsPageFrm() )
{
- const SwPageFrm *pPgFrm =
- static_cast< const SwPageFrm * >( rList.pFrm );
- const SwSortedObjs *pObjs = pPgFrm->GetSortedObjs();
+ const SwPageFrm& rPgFrm = static_cast< const SwPageFrm& >( rFrm );
+ const SwSortedObjs *pObjs = rPgFrm.GetSortedObjs();
if( pObjs && pObjs->Count() )
+ {
aCurr = (*pObjs)[nNextObj++]->GetDrawObj();
+ }
}
- else if( rList.pFrm->IsTxtFrm() )
+ else if( rFrm.IsTxtFrm() )
{
- const SwSortedObjs *pObjs = rList.pFrm->GetDrawObjs();
- if( pObjs && pObjs->Count() )
+ const SwSortedObjs *pObjs = rFrm.GetDrawObjs();
+ if ( pObjs && pObjs->Count() )
{
aCurr = (*pObjs)[nNextObj++]->GetDrawObj();
while( aCurr.IsValid() && !aCurr.IsBoundAsChar() )
+ {
aCurr = (nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
-
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
+ }
+ }
+ if ( !aCurr.IsValid() )
+ {
+ ::vos::ORef < SwAccessibleContext > xAccImpl =
+ rAccMap.GetContextImpl( &rFrm, sal_False );
+ if( xAccImpl.isValid() )
+ {
+ SwAccessibleContext* pAccImpl = xAccImpl.getBodyPtr();
+ aCurr = SwAccessibleChild( pAccImpl->GetAdditionalAccessibleChild( 0 ) );
+ ++nNextObj;
+ }
}
}
}
- if( rList.bVisibleOnly )
+
+ if( rList.IsVisibleChildrenOnly() )
{
// Find the first visible
while( aCurr.IsValid() &&
- !aCurr.GetBox().IsOver( rList.aVisArea ) )
+ !aCurr.AlwaysIncludeAsChild() &&
+ !aCurr.GetBox( rAccMap ).IsOver( rList.GetVisArea() ) )
+ {
next();
+ }
}
}
-SwFrmOrObjSList_const_iterator& SwFrmOrObjSList_const_iterator::next()
+SwAccessibleChildSList_const_iterator& SwAccessibleChildSList_const_iterator::next()
{
- sal_Bool bGetSdrObject = sal_False;
- if( aCurr.GetSdrObject() )
+ bool bNextTaken( true );
+ if( aCurr.GetDrawObject() || aCurr.GetWindow() )
{
- bGetSdrObject = sal_True;
+ bNextTaken = false;
}
else if( aCurr.GetSwFrm() )
{
aCurr = aCurr.GetSwFrm()->GetNext();
if( !aCurr.GetSwFrm() )
- bGetSdrObject = sal_True;
+ {
+ bNextTaken = false;
+ }
}
- if( bGetSdrObject )
+ if( !bNextTaken )
{
- if( rList.pFrm->IsPageFrm() )
+ const SwFrm& rFrm = rList.GetFrm();
+ if( rFrm.IsPageFrm() )
{
- const SwPageFrm *pPgFrm =
- static_cast< const SwPageFrm * >( rList.pFrm );
- const SwSortedObjs *pObjs = pPgFrm->GetSortedObjs();
- aCurr = (pObjs && nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
+ const SwPageFrm& rPgFrm = static_cast< const SwPageFrm& >( rFrm );
+ const SwSortedObjs *pObjs = rPgFrm.GetSortedObjs();
+ aCurr = ( pObjs && nNextObj < pObjs->Count() )
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
}
- else if( rList.pFrm->IsTxtFrm() )
+ else if( rFrm.IsTxtFrm() )
{
- const SwSortedObjs *pObjs = rList.pFrm->GetDrawObjs();
- aCurr = (pObjs && nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
+ const SwSortedObjs* pObjs = rFrm.GetDrawObjs();
+ const sal_uInt32 nObjsCount = pObjs ? pObjs->Count() : 0;
+ aCurr = ( pObjs && nNextObj < nObjsCount )
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
while( aCurr.IsValid() && !aCurr.IsBoundAsChar() )
- aCurr = (nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
+ {
+ aCurr = ( nNextObj < nObjsCount )
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
+ }
+ if ( !aCurr.IsValid() )
+ {
+ ::vos::ORef < SwAccessibleContext > xAccImpl =
+ rList.GetAccMap().GetContextImpl( &rFrm, sal_False );
+ if( xAccImpl.isValid() )
+ {
+ SwAccessibleContext* pAccImpl = xAccImpl.getBodyPtr();
+ aCurr = SwAccessibleChild( pAccImpl->GetAdditionalAccessibleChild( nNextObj - nObjsCount ) );
+ ++nNextObj;
+ }
+ }
}
}
return *this;
}
-SwFrmOrObjSList_const_iterator& SwFrmOrObjSList_const_iterator::next_visible()
+SwAccessibleChildSList_const_iterator& SwAccessibleChildSList_const_iterator::next_visible()
{
next();
while( aCurr.IsValid() &&
- !aCurr.GetBox().IsOver( rList.aVisArea ) )
+ !aCurr.AlwaysIncludeAsChild() &&
+ !aCurr.GetBox( rList.GetAccMap() ).IsOver( rList.GetVisArea() ) )
+ {
next();
+ }
return *this;
}
+
+SwAccessibleChildSList_const_iterator& SwAccessibleChildSList_const_iterator::operator++()
+{
+ return rList.IsVisibleChildrenOnly() ? next_visible() : next();
+}
+
diff --git a/sw/source/core/access/accfrmobjslist.hxx b/sw/source/core/access/accfrmobjslist.hxx
index 2374dbc361ac..f81cfc85a9d7 100644
--- a/sw/source/core/access/accfrmobjslist.hxx
+++ b/sw/source/core/access/accfrmobjslist.hxx
@@ -28,117 +28,118 @@
#define _ACCFRMOBJSLIST_HXX
#include <accfrmobj.hxx>
+#include <swrect.hxx>
-class SwFrmOrObjSList;
+class SwAccessibleMap;
-class SwFrmOrObjSList_const_iterator
-{
- friend class SwFrmOrObjSList;
- const SwFrmOrObjSList& rList; // The frame we are iterating over
- SwFrmOrObj aCurr; // The current object
- sal_uInt16 nNextObj; // The index of the current sdr object
-
- inline SwFrmOrObjSList_const_iterator( const SwFrmOrObjSList& rLst );
- SwFrmOrObjSList_const_iterator( const SwFrmOrObjSList& rLst, sal_Bool );
-
-// SwFrmOrObjSList_const_iterator& begin();
- SwFrmOrObjSList_const_iterator& next();
- SwFrmOrObjSList_const_iterator& next_visible();
-
-public:
-
- inline SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList_const_iterator& rIter );
- inline sal_Bool operator==(
- const SwFrmOrObjSList_const_iterator& r ) const;
- inline sal_Bool operator!=(
- const SwFrmOrObjSList_const_iterator& r ) const;
- inline SwFrmOrObjSList_const_iterator& operator++();
- inline const SwFrmOrObj& operator*() const;
-};
+class SwAccessibleChildSList;
-// An iterator to iterate over a frame's child in any order
-class SwFrmOrObjSList
+class SwAccessibleChildSList_const_iterator
{
- friend class SwFrmOrObjSList_const_iterator;
+private:
+ friend class SwAccessibleChildSList;
- SwRect aVisArea;
- const SwFrm *pFrm; // The frame we are iterating over
- sal_Bool bVisibleOnly;
-
-public:
+ const SwAccessibleChildSList& rList; // The frame we are iterating over
+ sw::access::SwAccessibleChild aCurr; // The current object
+ sal_uInt16 nNextObj; // The index of the current sdr object
- typedef SwFrmOrObjSList_const_iterator const_iterator;
+ inline SwAccessibleChildSList_const_iterator( const SwAccessibleChildSList& rLst )
+ : rList( rLst )
+ , nNextObj( 0 )
+ {}
- inline SwFrmOrObjSList( const SwFrm *pF );
- inline SwFrmOrObjSList( const SwRect& rVisArea, const SwFrm *pF );
+ SwAccessibleChildSList_const_iterator( const SwAccessibleChildSList& rLst,
+ SwAccessibleMap& rAccMap );
- inline const_iterator begin() const;
- inline const_iterator end() const;
-};
-
-inline SwFrmOrObjSList_const_iterator::SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList& rLst ) :
- rList( rLst ), nNextObj( 0 )
-{
-}
+ SwAccessibleChildSList_const_iterator& next();
+ SwAccessibleChildSList_const_iterator& next_visible();
-inline SwFrmOrObjSList_const_iterator::SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList_const_iterator& rIter ) :
- rList( rIter.rList ),
- aCurr( rIter.aCurr ),
- nNextObj( rIter.nNextObj )
-{
-}
+public:
-inline sal_Bool SwFrmOrObjSList_const_iterator::operator==(
- const SwFrmOrObjSList_const_iterator& r ) const
-{
- return aCurr == r.aCurr;
-}
+ inline SwAccessibleChildSList_const_iterator( const SwAccessibleChildSList_const_iterator& rIter )
+ : rList( rIter.rList )
+ , aCurr( rIter.aCurr )
+ , nNextObj( rIter.nNextObj )
+ {}
-inline sal_Bool SwFrmOrObjSList_const_iterator::operator!=(
- const SwFrmOrObjSList_const_iterator& r ) const
-{
- return !(aCurr == r.aCurr);
-}
+ inline sal_Bool operator==( const SwAccessibleChildSList_const_iterator& r ) const
+ {
+ return aCurr == r.aCurr;
+ }
-inline SwFrmOrObjSList_const_iterator& SwFrmOrObjSList_const_iterator::operator++()
-{
- return rList.bVisibleOnly ? next_visible() : next();
-}
+ inline sal_Bool operator!=(
+ const SwAccessibleChildSList_const_iterator& r ) const
+ {
+ return !(*this == r);
+ }
-inline const SwFrmOrObj& SwFrmOrObjSList_const_iterator::operator*() const
-{
- return aCurr;
-}
+ SwAccessibleChildSList_const_iterator& operator++();
-inline SwFrmOrObjSList::SwFrmOrObjSList( const SwFrm *pF ) :
- pFrm( pF ),
- bVisibleOnly( sal_False )
-{
-}
+ inline const sw::access::SwAccessibleChild& operator*() const
+ {
+ return aCurr;
+ }
+};
-inline SwFrmOrObjSList::SwFrmOrObjSList( const SwRect& rVisArea,
- const SwFrm *pF ) :
- aVisArea( rVisArea ),
- pFrm( pF )
+// An iterator to iterate over a frame's child in any order
+class SwAccessibleChildSList
{
- SwFrmOrObj aFrm( pFrm );
- bVisibleOnly = aFrm.IsVisibleChildrenOnly();
-}
+ const SwRect maVisArea;
+ const SwFrm& mrFrm;
+ const sal_Bool mbVisibleChildrenOnly;
+ SwAccessibleMap& mrAccMap;
-inline SwFrmOrObjSList_const_iterator SwFrmOrObjSList::begin() const
-{
-// SwFrmOrObjSList_const_iterator aIter2( *this );
-// aIter2.begin();
-// return aIter2;
- return SwFrmOrObjSList_const_iterator( *this, sal_True );
-}
+public:
-inline SwFrmOrObjSList_const_iterator SwFrmOrObjSList::end() const
-{
- return SwFrmOrObjSList_const_iterator( *this );
-}
+ typedef SwAccessibleChildSList_const_iterator const_iterator;
+
+ inline SwAccessibleChildSList( const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap )
+ : maVisArea()
+ , mrFrm( rFrm )
+ , mbVisibleChildrenOnly( sal_False )
+ , mrAccMap( rAccMap )
+ {}
+
+ inline SwAccessibleChildSList( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap )
+ : maVisArea( rVisArea )
+ , mrFrm( rFrm )
+ , mbVisibleChildrenOnly( sw::access::SwAccessibleChild( &rFrm ).IsVisibleChildrenOnly() )
+ , mrAccMap( rAccMap )
+ {
+ }
+
+ inline const_iterator begin() const
+ {
+ return SwAccessibleChildSList_const_iterator( *this, mrAccMap );
+ }
+
+ inline const_iterator end() const
+ {
+ return SwAccessibleChildSList_const_iterator( *this );
+ }
+
+ inline const SwFrm& GetFrm() const
+ {
+ return mrFrm;
+ }
+
+ inline sal_Bool IsVisibleChildrenOnly() const
+ {
+ return mbVisibleChildrenOnly;
+ }
+
+ inline const SwRect& GetVisArea() const
+ {
+ return maVisArea;
+ }
+
+ inline SwAccessibleMap& GetAccMap() const
+ {
+ return mrAccMap;
+ }
+};
#endif
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index 367db154a30a..0d7ab98d3b03 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -39,9 +39,7 @@
#include <map>
#include <list>
#include <accmap.hxx>
-#ifndef _ACCCONTEXT_HXX
#include <acccontext.hxx>
-#endif
#include <accdoc.hxx>
#include <accpreview.hxx>
#include <accpage.hxx>
@@ -53,7 +51,7 @@
#include <accembedded.hxx>
#include <acccell.hxx>
#include <acctable.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <rootfrm.hxx>
#include <txtfrm.hxx>
#include <hffrm.hxx>
@@ -61,10 +59,9 @@
#include <cellfrm.hxx>
#include <tabfrm.hxx>
#include <pagefrm.hxx>
+#include <flyfrm.hxx>
#include <ndtyp.hxx>
-#ifndef IDOCUMENTDRAWMODELACCESS_HXX_INCLUDED
#include <IDocumentDrawModelAccess.hxx>
-#endif
#include <svx/ShapeTypeHandler.hxx>
#include <vcl/svapp.hxx>
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
@@ -77,10 +74,13 @@
#include <pam.hxx>
#include <ndtxt.hxx>
// <--
+#include <dflyobj.hxx>
+#include <prevwpage.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::accessibility;
using ::rtl::OUString;
+using namespace ::sw::access;
struct SwFrmFunc
{
@@ -329,7 +329,7 @@ private:
SwRect maOldBox; // the old bounds for CHILD_POS_CHANGED
// and POS_CHANGED
uno::WeakReference < XAccessible > mxAcc; // The object that fires the event
- SwFrmOrObj maFrmOrObj; // the child for CHILD_POS_CHANGED and
+ SwAccessibleChild maFrmOrObj; // the child for CHILD_POS_CHANGED and
// the same as xAcc for any other
// event type
EventType meType; // The event type
@@ -342,7 +342,7 @@ private:
public:
SwAccessibleEvent_Impl( EventType eT,
SwAccessibleContext *pA,
- const SwFrmOrObj& rFrmOrObj )
+ const SwAccessibleChild& rFrmOrObj )
: mxAcc( pA ),
maFrmOrObj( rFrmOrObj ),
meType( eT ),
@@ -350,7 +350,7 @@ public:
{}
SwAccessibleEvent_Impl( EventType eT,
- const SwFrmOrObj& rFrmOrObj )
+ const SwAccessibleChild& rFrmOrObj )
: maFrmOrObj( rFrmOrObj ),
meType( eT ),
mnStates( 0 )
@@ -369,7 +369,7 @@ public:
SwAccessibleEvent_Impl( EventType eT,
SwAccessibleContext *pA,
- const SwFrmOrObj& rFrmOrObj,
+ const SwAccessibleChild& rFrmOrObj,
const SwRect& rR )
: maOldBox( rR ),
mxAcc( pA ),
@@ -385,7 +385,7 @@ public:
// --> OD 2005-12-12 #i27301# - use new type definition for parameter <_nStates>
SwAccessibleEvent_Impl( EventType eT,
SwAccessibleContext *pA,
- const SwFrmOrObj& rFrmOrObj,
+ const SwAccessibleChild& rFrmOrObj,
const tAccessibleStates _nStates )
: mxAcc( pA ),
maFrmOrObj( rFrmOrObj ),
@@ -425,7 +425,7 @@ public:
maOldBox = rOldBox;
}
- inline const SwFrmOrObj& GetFrmOrObj() const
+ inline const SwAccessibleChild& GetFrmOrObj() const
{
return maFrmOrObj;
}
@@ -524,22 +524,26 @@ public:
//------------------------------------------------------------------------------
-struct SwFrmOrObjFunc
+struct SwAccessibleChildFunc
{
- sal_Bool operator()( const SwFrmOrObj& r1,
- const SwFrmOrObj& r2 ) const
+ sal_Bool operator()( const SwAccessibleChild& r1,
+ const SwAccessibleChild& r2 ) const
{
const void *p1 = r1.GetSwFrm()
- ? static_cast < const void * >( r1.GetSwFrm())
- : static_cast < const void * >( r1.GetSdrObject() );
+ ? static_cast < const void * >( r1.GetSwFrm())
+ : ( r1.GetDrawObject()
+ ? static_cast < const void * >( r1.GetDrawObject() )
+ : static_cast < const void * >( r1.GetWindow() ) );
const void *p2 = r2.GetSwFrm()
- ? static_cast < const void * >( r2.GetSwFrm())
- : static_cast < const void * >( r2.GetSdrObject() );
+ ? static_cast < const void * >( r2.GetSwFrm())
+ : ( r2.GetDrawObject()
+ ? static_cast < const void * >( r2.GetDrawObject() )
+ : static_cast < const void * >( r2.GetWindow() ) );
return p1 < p2;
}
};
-typedef ::std::map < SwFrmOrObj, SwAccessibleEventList_Impl::iterator,
- SwFrmOrObjFunc > _SwAccessibleEventMap_Impl;
+typedef ::std::map < SwAccessibleChild, SwAccessibleEventList_Impl::iterator,
+ SwAccessibleChildFunc > _SwAccessibleEventMap_Impl;
class SwAccessibleEventMap_Impl: public _SwAccessibleEventMap_Impl
{
@@ -577,6 +581,222 @@ typedef ::std::map< uno::WeakReference < XAccessible >,
class SwAccessibleSelectedParas_Impl: public _SwAccessibleSelectedParas_Impl
{};
// <--
+
+// helper class that stores preview data
+class SwAccPreviewData
+{
+ typedef std::vector<Rectangle> Rectangles;
+ Rectangles maPreviewRects;
+ Rectangles maLogicRects;
+
+ SwRect maVisArea;
+ Fraction maScale;
+
+ const SwPageFrm *mpSelPage;
+
+ /** adjust logic page retangle to its visible part
+
+ OD 17.01.2003 #103492#
+
+ @author OD
+
+ @param _iorLogicPgSwRect
+ input/output parameter - reference to the logic page rectangle, which
+ has to be adjusted.
+
+ @param _rPrevwPgSwRect
+ input parameter - constant reference to the corresponding preview page
+ rectangle; needed to determine the visible part of the logic page rectangle.
+
+ @param _rPrevwWinSize
+ input paramter - constant reference to the preview window size in TWIP;
+ needed to determine the visible part of the logic page rectangle
+ */
+ void AdjustLogicPgRectToVisibleArea( SwRect& _iorLogicPgSwRect,
+ const SwRect& _rPrevwPgSwRect,
+ const Size& _rPrevwWinSize );
+
+public:
+ SwAccPreviewData();
+ ~SwAccPreviewData();
+
+ // OD 14.01.2003 #103492# - complete re-factoring of method due to new
+ // page/print preview functionality.
+ void Update( const SwAccessibleMap& rAccMap,
+ const std::vector<PrevwPage*>& _rPrevwPages,
+ const Fraction& _rScale,
+ const SwPageFrm* _pSelectedPageFrm,
+ const Size& _rPrevwWinSize );
+
+ // OD 14.01.2003 #103492# - complete re-factoring of method due to new
+ // page/print preview functionality.
+ void InvalidateSelection( const SwPageFrm* _pSelectedPageFrm );
+
+ const SwRect& GetVisArea() const;
+
+ MapMode GetMapModeForPreview( ) const;
+
+ /** Adjust the MapMode so that the preview page appears at the
+ * proper position. rPoint identifies the page for which the
+ * MapMode should be adjusted. If bFromPreview is true, rPoint is
+ * a preview coordinate; else it's a document coordinate. */
+ // OD 17.01.2003 #103492# - delete unused 3rd parameter.
+ void AdjustMapMode( MapMode& rMapMode,
+ const Point& rPoint ) const;
+
+ inline const SwPageFrm *GetSelPage() const { return mpSelPage; }
+
+ void DisposePage(const SwPageFrm *pPageFrm );
+};
+
+SwAccPreviewData::SwAccPreviewData() :
+ mpSelPage( 0 )
+{
+}
+
+SwAccPreviewData::~SwAccPreviewData()
+{
+}
+
+// OD 13.01.2003 #103492# - complete re-factoring of method due to new page/print
+// preview functionality.
+void SwAccPreviewData::Update( const SwAccessibleMap& rAccMap,
+ const std::vector<PrevwPage*>& _rPrevwPages,
+ const Fraction& _rScale,
+ const SwPageFrm* _pSelectedPageFrm,
+ const Size& _rPrevwWinSize )
+{
+ // store preview scaling, maximal preview page size and selected page
+ maScale = _rScale;
+ mpSelPage = _pSelectedPageFrm;
+
+ // prepare loop on preview pages
+ maPreviewRects.clear();
+ maLogicRects.clear();
+ SwAccessibleChild aPage;
+ maVisArea.Clear();
+
+ // loop on preview pages to calculate <maPreviewRects>, <maLogicRects> and
+ // <maVisArea>
+ for ( std::vector<PrevwPage*>::const_iterator aPageIter = _rPrevwPages.begin();
+ aPageIter != _rPrevwPages.end();
+ ++aPageIter )
+ {
+ aPage = (*aPageIter)->pPage;
+
+ // add preview page rectangle to <maPreviewRects>
+ Rectangle aPrevwPgRect( (*aPageIter)->aPrevwWinPos, (*aPageIter)->aPageSize );
+ maPreviewRects.push_back( aPrevwPgRect );
+
+ // add logic page rectangle to <maLogicRects>
+ SwRect aLogicPgSwRect( aPage.GetBox( rAccMap ) );
+ Rectangle aLogicPgRect( aLogicPgSwRect.SVRect() );
+ maLogicRects.push_back( aLogicPgRect );
+ // union visible area with visible part of logic page rectangle
+ if ( (*aPageIter)->bVisible )
+ {
+ if ( !(*aPageIter)->pPage->IsEmptyPage() )
+ {
+ AdjustLogicPgRectToVisibleArea( aLogicPgSwRect,
+ SwRect( aPrevwPgRect ),
+ _rPrevwWinSize );
+ }
+ if ( maVisArea.IsEmpty() )
+ maVisArea = aLogicPgSwRect;
+ else
+ maVisArea.Union( aLogicPgSwRect );
+ }
+ }
+}
+
+// OD 16.01.2003 #103492# - complete re-factoring of method due to new page/print
+// preview functionality.
+void SwAccPreviewData::InvalidateSelection( const SwPageFrm* _pSelectedPageFrm )
+{
+ mpSelPage = _pSelectedPageFrm;
+ ASSERT( mpSelPage, "selected page not found" );
+}
+
+struct ContainsPredicate
+{
+ const Point& mrPoint;
+ ContainsPredicate( const Point& rPoint ) : mrPoint(rPoint) {}
+ bool operator() ( const Rectangle& rRect ) const
+ {
+ return rRect.IsInside( mrPoint ) ? true : false;
+ }
+};
+
+const SwRect& SwAccPreviewData::GetVisArea() const
+{
+ return maVisArea;
+}
+
+void SwAccPreviewData::AdjustMapMode( MapMode& rMapMode,
+ const Point& rPoint ) const
+{
+ // adjust scale
+ rMapMode.SetScaleX( maScale );
+ rMapMode.SetScaleY( maScale );
+
+ // find proper rectangle
+ Rectangles::const_iterator aBegin = maLogicRects.begin();
+ Rectangles::const_iterator aEnd = maLogicRects.end();
+ Rectangles::const_iterator aFound = ::std::find_if( aBegin, aEnd,
+ ContainsPredicate( rPoint ) );
+
+ if( aFound != aEnd )
+ {
+ // found! set new origin
+ Point aPoint = (maPreviewRects.begin() + (aFound - aBegin))->TopLeft();
+ aPoint -= (maLogicRects.begin() + (aFound-aBegin))->TopLeft();
+ rMapMode.SetOrigin( aPoint );
+ }
+ // else: don't adjust MapMode
+}
+
+void SwAccPreviewData::DisposePage(const SwPageFrm *pPageFrm )
+{
+ if( mpSelPage == pPageFrm )
+ mpSelPage = 0;
+}
+
+/** adjust logic page retangle to its visible part
+
+ OD 17.01.2003 #103492#
+
+ @author OD
+*/
+void SwAccPreviewData::AdjustLogicPgRectToVisibleArea(
+ SwRect& _iorLogicPgSwRect,
+ const SwRect& _rPrevwPgSwRect,
+ const Size& _rPrevwWinSize )
+{
+ // determine preview window rectangle
+ const SwRect aPrevwWinSwRect( Point( 0, 0 ), _rPrevwWinSize );
+ // calculate visible preview page rectangle
+ SwRect aVisPrevwPgSwRect( _rPrevwPgSwRect );
+ aVisPrevwPgSwRect.Intersection( aPrevwWinSwRect );
+ // adjust logic page rectangle
+ SwTwips nTmpDiff;
+ // left
+ nTmpDiff = aVisPrevwPgSwRect.Left() - _rPrevwPgSwRect.Left();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Left( _iorLogicPgSwRect.Left() + nTmpDiff );
+ // top
+ nTmpDiff = aVisPrevwPgSwRect.Top() - _rPrevwPgSwRect.Top();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Top( _iorLogicPgSwRect.Top() + nTmpDiff );
+ // right
+ nTmpDiff = _rPrevwPgSwRect.Right() - aVisPrevwPgSwRect.Right();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Right( _iorLogicPgSwRect.Right() - nTmpDiff );
+ // bottom
+ nTmpDiff = _rPrevwPgSwRect.Bottom() - aVisPrevwPgSwRect.Bottom();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Bottom( _iorLogicPgSwRect.Bottom() - nTmpDiff );
+}
+
//------------------------------------------------------------------------------
static sal_Bool AreInSameTable( const uno::Reference< XAccessible >& rAcc,
const SwFrm *pFrm )
@@ -796,9 +1016,10 @@ void SwAccessibleMap::InvalidateCursorPosition(
ASSERT( pAccImpl->GetFrm(), "caret context is disposed" );
if( GetShell()->ActionPend() )
{
- SwAccessibleEvent_Impl aEvent(
- SwAccessibleEvent_Impl::CARET_OR_STATES, pAccImpl,
- pAccImpl->GetFrm(), ACC_STATE_CARET );
+ SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
+ pAccImpl,
+ SwAccessibleChild(pAccImpl->GetFrm()),
+ ACC_STATE_CARET );
AppendEvent( aEvent );
}
else
@@ -873,11 +1094,10 @@ void SwAccessibleMap::DoInvalidateShapeSelection()
}
if( bChanged )
{
- SwFrmOrObj aFrmOrObj( pShape->first );
- SwFrmOrObj aParent =
- SwAccessibleFrame::GetParent( aFrmOrObj,
- GetShell()->IsPreView() );
- aParents.push_back( aParent.GetSwFrm() );
+ const SwFrm* pParent = SwAccessibleFrame::GetParent(
+ SwAccessibleChild( pShape->first ),
+ GetShell()->IsPreView() );
+ aParents.push_back( pParent );
}
}
@@ -1166,7 +1386,7 @@ uno::Reference<XAccessible> SwAccessibleMap::GetDocumentPreview(
// create & update preview data object
if( mpPreview == NULL )
mpPreview = new SwAccPreviewData();
- mpPreview->Update( _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
+ mpPreview->Update( *this, _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
uno::Reference<XAccessible> xAcc = _GetDocumentView( sal_True );
return xAcc;
@@ -1197,8 +1417,8 @@ uno::Reference< XAccessible> SwAccessibleMap::GetContext( const SwFrm *pFrm,
{
case FRM_TXT:
mnPara++;
- pAcc = new SwAccessibleParagraph( this,
- static_cast< const SwTxtFrm * >( pFrm ) );
+ pAcc = new SwAccessibleParagraph( *this,
+ static_cast< const SwTxtFrm& >( *pFrm ) );
break;
case FRM_HEADER:
pAcc = new SwAccessibleHeaderFooter( this,
@@ -1458,10 +1678,12 @@ void SwAccessibleMap::RemoveContext( const SdrObject *pObj )
}
-void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
+void SwAccessibleMap::Dispose( const SwFrm *pFrm,
+ const SdrObject *pObj,
+ Window* pWindow,
sal_Bool bRecursive )
{
- SwFrmOrObj aFrmOrObj( pFrm, pObj );
+ SwAccessibleChild aFrmOrObj( pFrm, pObj, pWindow );
// Indeed, the following assert checks the frame's accessible flag,
// because that's the one that is evaluated in the layout. The frame
@@ -1470,11 +1692,11 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
ASSERT( !aFrmOrObj.GetSwFrm() || aFrmOrObj.GetSwFrm()->IsAccessibleFrm(),
"non accessible frame should be disposed" );
- ::vos::ORef< SwAccessibleContext > xAccImpl;
- ::vos::ORef< SwAccessibleContext > xParentAccImpl;
- ::vos::ORef< ::accessibility::AccessibleShape > xShapeAccImpl;
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
+ ::vos::ORef< SwAccessibleContext > xAccImpl;
+ ::vos::ORef< SwAccessibleContext > xParentAccImpl;
+ ::vos::ORef< ::accessibility::AccessibleShape > xShapeAccImpl;
// get accessible context for frame
{
vos::OGuard aGuard( maMutex );
@@ -1514,7 +1736,7 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
mpShapeMap )
{
SwAccessibleShapeMap_Impl::iterator aIter =
- mpShapeMap->find( aFrmOrObj.GetSdrObject() );
+ mpShapeMap->find( aFrmOrObj.GetDrawObject() );
if( aIter != mpShapeMap->end() )
{
uno::Reference < XAccessible > xAcc( (*aIter).second );
@@ -1574,7 +1796,7 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
}
else if( xShapeAccImpl.isValid() )
{
- RemoveContext( aFrmOrObj.GetSdrObject() );
+ RemoveContext( aFrmOrObj.GetDrawObject() );
xShapeAccImpl->dispose();
}
@@ -1585,9 +1807,10 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
void SwAccessibleMap::InvalidatePosOrSize( const SwFrm *pFrm,
const SdrObject *pObj,
+ Window* pWindow,
const SwRect& rOldBox )
{
- SwFrmOrObj aFrmOrObj( pFrm, pObj );
+ SwAccessibleChild aFrmOrObj( pFrm, pObj, pWindow );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
::vos::ORef< SwAccessibleContext > xAccImpl;
@@ -1669,7 +1892,7 @@ void SwAccessibleMap::InvalidatePosOrSize( const SwFrm *pFrm,
void SwAccessibleMap::InvalidateContent( const SwFrm *pFrm )
{
- SwFrmOrObj aFrmOrObj( pFrm );
+ SwAccessibleChild aFrmOrObj( pFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1708,7 +1931,7 @@ void SwAccessibleMap::InvalidateContent( const SwFrm *pFrm )
// --> OD 2009-01-06 #i88069#
void SwAccessibleMap::InvalidateAttr( const SwTxtFrm& rTxtFrm )
{
- SwFrmOrObj aFrmOrObj( &rTxtFrm );
+ SwAccessibleChild aFrmOrObj( &rTxtFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1747,7 +1970,7 @@ void SwAccessibleMap::InvalidateAttr( const SwTxtFrm& rTxtFrm )
void SwAccessibleMap::InvalidateCursorPosition( const SwFrm *pFrm )
{
- SwFrmOrObj aFrmOrObj( pFrm );
+ SwAccessibleChild aFrmOrObj( pFrm );
sal_Bool bShapeSelected = sal_False;
const ViewShell *pVSh = GetShell();
if( pVSh->ISA( SwCrsrShell ) )
@@ -1873,7 +2096,7 @@ void SwAccessibleMap::InvalidateStates( tAccessibleStates _nStates,
const SwFrm* _pFrm )
{
// Start with the frame or the first upper that is accessible
- SwFrmOrObj aFrmOrObj( _pFrm );
+ SwAccessibleChild aFrmOrObj( _pFrm );
while( aFrmOrObj.GetSwFrm() &&
!aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
aFrmOrObj = aFrmOrObj.GetSwFrm()->GetUpper();
@@ -1885,9 +2108,10 @@ void SwAccessibleMap::InvalidateStates( tAccessibleStates _nStates,
static_cast< SwAccessibleContext *>( xAcc.get() );
if( GetShell()->ActionPend() )
{
- SwAccessibleEvent_Impl aEvent(
- SwAccessibleEvent_Impl::CARET_OR_STATES, pAccImpl,
- pAccImpl->GetFrm(), _nStates );
+ SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
+ pAccImpl,
+ SwAccessibleChild(pAccImpl->GetFrm()),
+ _nStates );
AppendEvent( aEvent );
}
else
@@ -1902,7 +2126,7 @@ void SwAccessibleMap::_InvalidateRelationSet( const SwFrm* pFrm,
sal_Bool bFrom )
{
// first, see if this frame is accessible, and if so, get the respective
- SwFrmOrObj aFrmOrObj( pFrm );
+ SwAccessibleChild aFrmOrObj( pFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1927,9 +2151,11 @@ void SwAccessibleMap::_InvalidateRelationSet( const SwFrm* pFrm,
static_cast< SwAccessibleContext *>( xAcc.get() );
if( GetShell()->ActionPend() )
{
- SwAccessibleEvent_Impl aEvent(
- SwAccessibleEvent_Impl::CARET_OR_STATES, pAccImpl, pFrm,
- bFrom ? ACC_STATE_RELATION_FROM : ACC_STATE_RELATION_TO );
+ SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
+ pAccImpl, SwAccessibleChild(pFrm),
+ ( bFrom
+ ? ACC_STATE_RELATION_FROM
+ : ACC_STATE_RELATION_TO ) );
AppendEvent( aEvent );
}
else
@@ -1971,7 +2197,7 @@ void SwAccessibleMap::InvalidateParaFlowRelation( const SwTxtFrm& _rTxtFrm,
void SwAccessibleMap::InvalidateParaTextSelection( const SwTxtFrm& _rTxtFrm )
{
// first, see if this frame is accessible, and if so, get the respective
- SwFrmOrObj aFrmOrObj( &_rTxtFrm );
+ SwAccessibleChild aFrmOrObj( &_rTxtFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1998,7 +2224,8 @@ void SwAccessibleMap::InvalidateParaTextSelection( const SwTxtFrm& _rTxtFrm )
{
SwAccessibleEvent_Impl aEvent(
SwAccessibleEvent_Impl::CARET_OR_STATES,
- pAccImpl, &_rTxtFrm,
+ pAccImpl,
+ SwAccessibleChild( &_rTxtFrm ),
ACC_STATE_TEXT_SELECTION_CHANGED );
AppendEvent( aEvent );
}
@@ -2011,6 +2238,43 @@ void SwAccessibleMap::InvalidateParaTextSelection( const SwTxtFrm& _rTxtFrm )
}
}
+sal_Int32 SwAccessibleMap::GetChildIndex( const SwFrm& rParentFrm,
+ Window& rChild ) const
+{
+ sal_Int32 nIndex( -1 );
+
+ SwAccessibleChild aFrmOrObj( &rParentFrm );
+ if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
+ {
+ uno::Reference < XAccessible > xAcc;
+ {
+ vos::OGuard aGuard( maMutex );
+
+ if( mpFrmMap )
+ {
+ SwAccessibleContextMap_Impl::iterator aIter =
+ mpFrmMap->find( aFrmOrObj.GetSwFrm() );
+ if( aIter != mpFrmMap->end() )
+ {
+ xAcc = (*aIter).second;
+ }
+ }
+ }
+
+ if( xAcc.is() )
+ {
+ SwAccessibleContext *pAccImpl =
+ static_cast< SwAccessibleContext *>( xAcc.get() );
+
+ nIndex = pAccImpl->GetChildIndex( const_cast<SwAccessibleMap&>(*this),
+ SwAccessibleChild( &rChild ) );
+ }
+ }
+
+ return nIndex;
+}
+
+
// OD 15.01.2003 #103492# - complete re-factoring of method due to new page/print
// preview functionality.
void SwAccessibleMap::UpdatePreview( const std::vector<PrevwPage*>& _rPrevwPages,
@@ -2022,7 +2286,7 @@ void SwAccessibleMap::UpdatePreview( const std::vector<PrevwPage*>& _rPrevwPages
DBG_ASSERT( mpPreview != NULL, "no preview data?" );
// OD 15.01.2003 #103492# - adjustments for changed method signature
- mpPreview->Update( _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
+ mpPreview->Update( *this, _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
// propagate change of VisArea through the document's
// accessibility tree; this will also send appropriate scroll
@@ -2247,7 +2511,7 @@ sal_Bool SwAccessibleMap::ReplaceChild (
// Also get keep parent.
uno::Reference < XAccessible > xParent( pCurrentChild->getAccessibleParent() );
pCurrentChild = 0; // well be realease by dispose
- Dispose( 0, pObj );
+ Dispose( 0, pObj, 0 );
{
vos::OGuard aGuard( maMutex );
@@ -2284,7 +2548,7 @@ sal_Bool SwAccessibleMap::ReplaceChild (
}
SwRect aEmptyRect;
- InvalidatePosOrSize( 0, pObj, aEmptyRect );
+ InvalidatePosOrSize( 0, pObj, 0, aEmptyRect );
return sal_True;
}
@@ -2612,153 +2876,13 @@ void SwAccessibleMap::InvalidateTextSelectionOfAllParas()
}
}
-//
-// SwAccPreviewData
-//
-
-SwAccPreviewData::SwAccPreviewData() :
- mpSelPage( 0 )
-{
-}
-
-SwAccPreviewData::~SwAccPreviewData()
-{
-}
-
-// OD 13.01.2003 #103492# - complete re-factoring of method due to new page/print
-// preview functionality.
-void SwAccPreviewData::Update( const std::vector<PrevwPage*>& _rPrevwPages,
- const Fraction& _rScale,
- const SwPageFrm* _pSelectedPageFrm,
- const Size& _rPrevwWinSize )
+const SwRect& SwAccessibleMap::GetVisArea() const
{
- // store preview scaling, maximal preview page size and selected page
- maScale = _rScale;
- mpSelPage = _pSelectedPageFrm;
-
- // prepare loop on preview pages
- maPreviewRects.clear();
- maLogicRects.clear();
- SwFrmOrObj aPage;
- maVisArea.Clear();
+ DBG_ASSERT( !GetShell()->IsPreView() || (mpPreview != NULL),
+ "preview without preview data?" );
- // loop on preview pages to calculate <maPreviewRects>, <maLogicRects> and
- // <maVisArea>
- for ( std::vector<PrevwPage*>::const_iterator aPageIter = _rPrevwPages.begin();
- aPageIter != _rPrevwPages.end();
- ++aPageIter )
- {
- aPage = (*aPageIter)->pPage;
-
- // add preview page rectangle to <maPreviewRects>
- Rectangle aPrevwPgRect( (*aPageIter)->aPrevwWinPos, (*aPageIter)->aPageSize );
- maPreviewRects.push_back( aPrevwPgRect );
-
- // add logic page rectangle to <maLogicRects>
- SwRect aLogicPgSwRect( aPage.GetBox() );
- Rectangle aLogicPgRect( aLogicPgSwRect.SVRect() );
- maLogicRects.push_back( aLogicPgRect );
- // union visible area with visible part of logic page rectangle
- if ( (*aPageIter)->bVisible )
- {
- if ( !(*aPageIter)->pPage->IsEmptyPage() )
- {
- AdjustLogicPgRectToVisibleArea( aLogicPgSwRect,
- SwRect( aPrevwPgRect ),
- _rPrevwWinSize );
- }
- if ( maVisArea.IsEmpty() )
- maVisArea = aLogicPgSwRect;
- else
- maVisArea.Union( aLogicPgSwRect );
- }
- }
+ return GetShell()->IsPreView()
+ ? mpPreview->GetVisArea()
+ : GetShell()->VisArea();
}
-// OD 16.01.2003 #103492# - complete re-factoring of method due to new page/print
-// preview functionality.
-void SwAccPreviewData::InvalidateSelection( const SwPageFrm* _pSelectedPageFrm )
-{
- mpSelPage = _pSelectedPageFrm;
- ASSERT( mpSelPage, "selected page not found" );
-}
-
-struct ContainsPredicate
-{
- const Point& mrPoint;
- ContainsPredicate( const Point& rPoint ) : mrPoint(rPoint) {}
- bool operator() ( const Rectangle& rRect ) const
- {
- return rRect.IsInside( mrPoint ) ? true : false;
- }
-};
-
-const SwRect& SwAccPreviewData::GetVisArea() const
-{
- return maVisArea;
-}
-
-void SwAccPreviewData::AdjustMapMode( MapMode& rMapMode,
- const Point& rPoint ) const
-{
- // adjust scale
- rMapMode.SetScaleX( maScale );
- rMapMode.SetScaleY( maScale );
-
- // find proper rectangle
- Rectangles::const_iterator aBegin = maLogicRects.begin();
- Rectangles::const_iterator aEnd = maLogicRects.end();
- Rectangles::const_iterator aFound = ::std::find_if( aBegin, aEnd,
- ContainsPredicate( rPoint ) );
-
- if( aFound != aEnd )
- {
- // found! set new origin
- Point aPoint = (maPreviewRects.begin() + (aFound - aBegin))->TopLeft();
- aPoint -= (maLogicRects.begin() + (aFound-aBegin))->TopLeft();
- rMapMode.SetOrigin( aPoint );
- }
- // else: don't adjust MapMode
-}
-
-void SwAccPreviewData::DisposePage(const SwPageFrm *pPageFrm )
-{
- if( mpSelPage == pPageFrm )
- mpSelPage = 0;
-}
-
-/** adjust logic page retangle to its visible part
-
- OD 17.01.2003 #103492#
-
- @author OD
-*/
-void SwAccPreviewData::AdjustLogicPgRectToVisibleArea(
- SwRect& _iorLogicPgSwRect,
- const SwRect& _rPrevwPgSwRect,
- const Size& _rPrevwWinSize )
-{
- // determine preview window rectangle
- const SwRect aPrevwWinSwRect( Point( 0, 0 ), _rPrevwWinSize );
- // calculate visible preview page rectangle
- SwRect aVisPrevwPgSwRect( _rPrevwPgSwRect );
- aVisPrevwPgSwRect.Intersection( aPrevwWinSwRect );
- // adjust logic page rectangle
- SwTwips nTmpDiff;
- // left
- nTmpDiff = aVisPrevwPgSwRect.Left() - _rPrevwPgSwRect.Left();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Left( _iorLogicPgSwRect.Left() + nTmpDiff );
- // top
- nTmpDiff = aVisPrevwPgSwRect.Top() - _rPrevwPgSwRect.Top();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Top( _iorLogicPgSwRect.Top() + nTmpDiff );
- // right
- nTmpDiff = _rPrevwPgSwRect.Right() - aVisPrevwPgSwRect.Right();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Right( _iorLogicPgSwRect.Right() - nTmpDiff );
- // bottom
- nTmpDiff = _rPrevwPgSwRect.Bottom() - aVisPrevwPgSwRect.Bottom();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Bottom( _iorLogicPgSwRect.Bottom() - nTmpDiff );
-}
diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx
index 3961c8988351..368e076470ab 100644
--- a/sw/source/core/access/accpara.cxx
+++ b/sw/source/core/access/accpara.cxx
@@ -29,13 +29,14 @@
#include "precompiled_sw.hxx"
#include <txtfrm.hxx>
+#include <flyfrm.hxx>
#include <ndtxt.hxx>
#include <pam.hxx>
#include <unotextrange.hxx>
#include <unocrsrhelper.hxx>
#include <crstate.hxx>
#include <accmap.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <viewopt.hxx>
#include <vos/mutex.hxx>
#include <vcl/svapp.hxx>
@@ -51,56 +52,44 @@
#include <com/sun/star/i18n/XBreakIterator.hpp>
#include <com/sun/star/beans/UnknownPropertyException.hpp>
#include <breakit.hxx>
-#include "accpara.hxx"
-#ifndef _ACCESS_HRC
-#include "access.hrc"
-#endif
-#include "accportions.hxx"
+#include <accpara.hxx>
+#include <access.hrc>
+#include <accportions.hxx>
#include <sfx2/viewsh.hxx> // for ExecuteAtViewShell(...)
#include <sfx2/viewfrm.hxx> // for ExecuteAtViewShell(...)
#include <sfx2/dispatch.hxx> // for ExecuteAtViewShell(...)
#include <unotools/charclass.hxx> // for GetWordBoundary
// for get/setCharacterAttribute(...)
-#include "unocrsr.hxx"
-#include "unoport.hxx"
-#include "doc.hxx"
-#include "crsskip.hxx"
+#include <unocrsr.hxx>
+//#include <unoobj.hxx>
+#include <unoport.hxx>
+#include <doc.hxx>
+#include <crsskip.hxx>
#include <txtatr.hxx>
#include <acchyperlink.hxx>
#include <acchypertextdata.hxx>
-// --> OD 2005-12-02 #i27138#
#include <unotools/accessiblerelationsethelper.hxx>
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
-// <--
#include <comphelper/accessibletexthelper.hxx>
-// --> OD 2006-07-12 #i63870#
#include <unomap.hxx>
-// <--
-// --> OD 2007-01-15 #i72800#
#include <unoprnms.hxx>
-// <--
-// --> OD 2007-01-15 #i73371#
#include <com/sun/star/text/WritingMode2.hpp>
-// <--
-// --> OD 2007-01-17 #i71385#
#include <editeng/brshitem.hxx>
#include <viewimp.hxx>
-// <--
-// --> OD 2007-11-12 #i82637#
#include <boost/scoped_ptr.hpp>
-// <--
-// --> OD 2008-05-26 #i71360#
#include <textmarkuphelper.hxx>
+// --> OD 2010-02-22 #i10825#
+#include <parachangetrackinginfo.hxx>
+#include <com/sun/star/text/TextMarkupType.hpp>
+// <--
+// --> OD 2010-03-08 #i92233#
+#include <comphelper/stlunosequence.hxx>
// <--
#include <algorithm>
using namespace ::com::sun::star;
-using namespace ::com::sun::star::i18n;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::accessibility;
-using ::rtl::OUString;
using beans::PropertyValue;
using beans::XMultiPropertySet;
@@ -132,15 +121,15 @@ const SwTxtNode* SwAccessibleParagraph::GetTxtNode() const
return pNode;
}
-OUString SwAccessibleParagraph::GetString()
+::rtl::OUString SwAccessibleParagraph::GetString()
{
return GetPortionData().GetAccessibleString();
}
-OUString SwAccessibleParagraph::GetDescription()
+::rtl::OUString SwAccessibleParagraph::GetDescription()
{
// --> OD 2004-09-29 #117933# - provide empty description for paragraphs
- return OUString();
+ return ::rtl::OUString();
// <--
}
@@ -389,11 +378,11 @@ void SwAccessibleParagraph::GetStates(
void SwAccessibleParagraph::_InvalidateContent( sal_Bool bVisibleDataFired )
{
- OUString sOldText( GetString() );
+ ::rtl::OUString sOldText( GetString() );
ClearPortionData();
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( rText != sOldText )
{
@@ -425,8 +414,8 @@ void SwAccessibleParagraph::_InvalidateContent( sal_Bool bVisibleDataFired )
if( bNewIsHeading != bOldIsHeading || rText != sOldText )
{
- OUString sNewDesc( GetDescription() );
- OUString sOldDesc;
+ ::rtl::OUString sNewDesc( GetDescription() );
+ ::rtl::OUString sOldDesc;
{
vos::OGuard aGuard( aMutex );
sOldDesc = sDesc;
@@ -503,19 +492,27 @@ void SwAccessibleParagraph::_InvalidateFocus()
}
SwAccessibleParagraph::SwAccessibleParagraph(
- SwAccessibleMap* pInitMap,
- const SwTxtFrm *pTxtFrm ) :
- SwAccessibleContext( pInitMap, AccessibleRole::PARAGRAPH, pTxtFrm ),
- pPortionData( NULL ),
- pHyperTextData( NULL ),
- nOldCaretPos( -1 ),
- aSelectionHelper( *this )
+ SwAccessibleMap& rInitMap,
+ const SwTxtFrm& rTxtFrm )
+ // --> OD 2010-02-24 #i108125#
+ : SwClient( const_cast<SwTxtNode*>(rTxtFrm.GetTxtNode()) )
+ // <--
+ , SwAccessibleContext( &rInitMap, AccessibleRole::PARAGRAPH, &rTxtFrm )
+ , sDesc()
+ , pPortionData( NULL )
+ , pHyperTextData( NULL )
+ , nOldCaretPos( -1 )
+ , bIsHeading( sal_False )
+ , aSelectionHelper( *this )
+ // --> OD 2010-02-19 #i108125#
+ , mpParaChangeTrackInfo( new SwParaChangeTrackingInfo( rTxtFrm ) )
+ // <--
{
vos::OGuard aGuard(Application::GetSolarMutex());
bIsHeading = IsHeading();
// --> OD 2004-09-27 #117970# - set an empty accessibility name for paragraphs
- SetName( OUString() );
+ SetName( ::rtl::OUString() );
// <--
// If this object has the focus, then it is remembered by the map itself.
@@ -528,6 +525,9 @@ SwAccessibleParagraph::~SwAccessibleParagraph()
delete pPortionData;
delete pHyperTextData;
+ // --> OD 2010-02-22 #i108125#
+ delete mpParaChangeTrackInfo;
+ // <--
}
sal_Bool SwAccessibleParagraph::HasCursor()
@@ -648,8 +648,8 @@ sal_Bool SwAccessibleParagraph::IsValidRange(
sal_Bool SwAccessibleParagraph::GetCharBoundary(
- Boundary& rBound,
- const OUString&,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString&,
sal_Int32 nPos )
{
rBound.startPos = nPos;
@@ -658,8 +658,8 @@ sal_Bool SwAccessibleParagraph::GetCharBoundary(
}
sal_Bool SwAccessibleParagraph::GetWordBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos )
{
sal_Bool bRet = sal_False;
@@ -671,12 +671,12 @@ sal_Bool SwAccessibleParagraph::GetWordBoundary(
{
// get locale for this position
USHORT nModelPos = GetPortionData().GetModelPosition( nPos );
- Locale aLocale = pBreakIt->GetLocale(
+ lang::Locale aLocale = pBreakIt->GetLocale(
GetTxtNode()->GetLang( nModelPos ) );
// which type of word are we interested in?
// (DICTIONARY_WORD includes punctuation, ANY_WORD doesn't.)
- const USHORT nWordType = WordType::ANY_WORD;
+ const USHORT nWordType = i18n::WordType::ANY_WORD;
// get word boundary, as the Break-Iterator sees fit.
rBound = pBreakIt->GetBreakIter()->getWordBoundary(
@@ -697,8 +697,8 @@ sal_Bool SwAccessibleParagraph::GetWordBoundary(
}
sal_Bool SwAccessibleParagraph::GetSentenceBoundary(
- Boundary& rBound,
- const OUString&,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString&,
sal_Int32 nPos )
{
GetPortionData().GetSentenceBoundary( rBound, nPos );
@@ -706,8 +706,8 @@ sal_Bool SwAccessibleParagraph::GetSentenceBoundary(
}
sal_Bool SwAccessibleParagraph::GetLineBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos )
{
if( rText.getLength() == nPos )
@@ -718,8 +718,8 @@ sal_Bool SwAccessibleParagraph::GetLineBoundary(
}
sal_Bool SwAccessibleParagraph::GetParagraphBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 )
{
rBound.startPos = 0;
@@ -728,8 +728,8 @@ sal_Bool SwAccessibleParagraph::GetParagraphBoundary(
}
sal_Bool SwAccessibleParagraph::GetAttributeBoundary(
- Boundary& rBound,
- const OUString&,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString&,
sal_Int32 nPos )
{
GetPortionData().GetAttributeBoundary( rBound, nPos );
@@ -737,8 +737,8 @@ sal_Bool SwAccessibleParagraph::GetAttributeBoundary(
}
sal_Bool SwAccessibleParagraph::GetGlyphBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos )
{
sal_Bool bRet = sal_False;
@@ -751,11 +751,11 @@ sal_Bool SwAccessibleParagraph::GetGlyphBoundary(
{
// get locale for this position
USHORT nModelPos = GetPortionData().GetModelPosition( nPos );
- Locale aLocale = pBreakIt->GetLocale(
+ lang::Locale aLocale = pBreakIt->GetLocale(
GetTxtNode()->GetLang( nModelPos ) );
// get word boundary, as the Break-Iterator sees fit.
- const USHORT nIterMode = CharacterIteratorMode::SKIPCELL;
+ const USHORT nIterMode = i18n::CharacterIteratorMode::SKIPCELL;
sal_Int32 nDone = 0;
rBound.endPos = pBreakIt->GetBreakIter()->nextCharacters(
rText, nPos, aLocale, nIterMode, 1, nDone );
@@ -777,20 +777,20 @@ sal_Bool SwAccessibleParagraph::GetGlyphBoundary(
sal_Bool SwAccessibleParagraph::GetTextBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos,
sal_Int16 nTextType )
throw (
- IndexOutOfBoundsException,
- IllegalArgumentException,
+ lang::IndexOutOfBoundsException,
+ lang::IllegalArgumentException,
uno::RuntimeException)
{
// error checking
if( !( AccessibleTextType::LINE == nTextType
? IsValidPosition( nPos, rText.getLength() )
: IsValidChar( nPos, rText.getLength() ) ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
sal_Bool bRet;
@@ -825,13 +825,13 @@ sal_Bool SwAccessibleParagraph::GetTextBoundary(
break;
default:
- throw IllegalArgumentException( );
+ throw lang::IllegalArgumentException( );
}
return bRet;
}
-OUString SAL_CALL SwAccessibleParagraph::getAccessibleDescription (void)
+::rtl::OUString SAL_CALL SwAccessibleParagraph::getAccessibleDescription (void)
throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -845,7 +845,7 @@ OUString SAL_CALL SwAccessibleParagraph::getAccessibleDescription (void)
return sDesc;
}
-Locale SAL_CALL SwAccessibleParagraph::getLocale (void)
+lang::Locale SAL_CALL SwAccessibleParagraph::getLocale (void)
throw (IllegalAccessibleComponentStateException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -857,7 +857,7 @@ Locale SAL_CALL SwAccessibleParagraph::getLocale (void)
}
const SwTxtNode *pTxtNd = pTxtFrm->GetTxtNode();
- Locale aLoc( pBreakIt->GetLocale( pTxtNd->GetLang( 0 ) ) );
+ lang::Locale aLoc( pBreakIt->GetLocale( pTxtNd->GetLang( 0 ) ) );
return aLoc;
}
@@ -1010,10 +1010,10 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getBackground()
}
// <--
-OUString SAL_CALL SwAccessibleParagraph::getImplementationName()
+::rtl::OUString SAL_CALL SwAccessibleParagraph::getImplementationName()
throw( uno::RuntimeException )
{
- return OUString(RTL_CONSTASCII_USTRINGPARAM(sImplementationName));
+ return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sImplementationName));
}
sal_Bool SAL_CALL SwAccessibleParagraph::supportsService(
@@ -1026,13 +1026,13 @@ sal_Bool SAL_CALL SwAccessibleParagraph::supportsService(
sizeof(sAccessibleServiceName)-1 );
}
-Sequence< OUString > SAL_CALL SwAccessibleParagraph::getSupportedServiceNames()
+uno::Sequence< ::rtl::OUString > SAL_CALL SwAccessibleParagraph::getSupportedServiceNames()
throw( uno::RuntimeException )
{
- Sequence< OUString > aRet(2);
- OUString* pArray = aRet.getArray();
- pArray[0] = OUString( RTL_CONSTASCII_USTRINGPARAM(sServiceName) );
- pArray[1] = OUString( RTL_CONSTASCII_USTRINGPARAM(sAccessibleServiceName) );
+ uno::Sequence< ::rtl::OUString > aRet(2);
+ ::rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(sServiceName) );
+ pArray[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(sAccessibleServiceName) );
return aRet;
}
@@ -1040,10 +1040,10 @@ Sequence< OUString > SAL_CALL SwAccessibleParagraph::getSupportedServiceNames()
//===== XInterface =======================================================
//
-Any SwAccessibleParagraph::queryInterface( const Type& rType )
- throw (RuntimeException)
+uno::Any SwAccessibleParagraph::queryInterface( const uno::Type& rType )
+ throw (uno::RuntimeException)
{
- Any aRet;
+ uno::Any aRet;
if ( rType == ::getCppuType((uno::Reference<XAccessibleText> *)0) )
{
uno::Reference<XAccessibleText> aAccText = (XAccessibleText *) *this; // resolve ambiguity
@@ -1095,9 +1095,9 @@ Any SwAccessibleParagraph::queryInterface( const Type& rType )
}
//====== XTypeProvider ====================================================
-Sequence< Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(RuntimeException)
+uno::Sequence< uno::Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(uno::RuntimeException)
{
- Sequence< Type > aTypes( SwAccessibleContext::getTypes() );
+ uno::Sequence< uno::Type > aTypes( SwAccessibleContext::getTypes() );
sal_Int32 nIndex = aTypes.getLength();
// --> OD 2006-07-13 #i63870#
@@ -1106,7 +1106,7 @@ Sequence< Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(RuntimeExcepti
// add type accessibility::XAccessibleTextMarkup and accessibility::XAccessibleMultiLineText
aTypes.realloc( nIndex + 6 );
- Type* pTypes = aTypes.getArray();
+ uno::Type* pTypes = aTypes.getArray();
pTypes[nIndex++] = ::getCppuType( static_cast< uno::Reference< XAccessibleEditableText > * >( 0 ) );
pTypes[nIndex++] = ::getCppuType( static_cast< uno::Reference< XAccessibleTextAttributes > * >( 0 ) );
pTypes[nIndex++] = ::getCppuType( static_cast< uno::Reference< XAccessibleSelection > * >( 0 ) );
@@ -1118,11 +1118,11 @@ Sequence< Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(RuntimeExcepti
return aTypes;
}
-Sequence< sal_Int8 > SAL_CALL SwAccessibleParagraph::getImplementationId()
- throw(RuntimeException)
+uno::Sequence< sal_Int8 > SAL_CALL SwAccessibleParagraph::getImplementationId()
+ throw(uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
- static Sequence< sal_Int8 > aId( 16 );
+ static uno::Sequence< sal_Int8 > aId( 16 );
static sal_Bool bInit = sal_False;
if(!bInit)
{
@@ -1138,7 +1138,7 @@ Sequence< sal_Int8 > SAL_CALL SwAccessibleParagraph::getImplementationId()
//
sal_Int32 SwAccessibleParagraph::getCaretPosition()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1160,7 +1160,7 @@ sal_Int32 SwAccessibleParagraph::getCaretPosition()
}
sal_Bool SAL_CALL SwAccessibleParagraph::setCaretPosition( sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1170,7 +1170,7 @@ sal_Bool SAL_CALL SwAccessibleParagraph::setCaretPosition( sal_Int32 nIndex )
sal_Int32 nLength = GetString().getLength();
if ( ! IsValidPosition( nIndex, nLength ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
sal_Bool bRet = sal_False;
@@ -1193,13 +1193,13 @@ sal_Bool SAL_CALL SwAccessibleParagraph::setCaretPosition( sal_Int32 nIndex )
}
sal_Unicode SwAccessibleParagraph::getCharacter( sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- OUString sText( GetString() );
+ ::rtl::OUString sText( GetString() );
// return character (if valid)
if( IsValidChar(nIndex, sText.getLength() ) )
@@ -1207,25 +1207,25 @@ sal_Unicode SwAccessibleParagraph::getCharacter( sal_Int32 nIndex )
return sText.getStr()[nIndex];
}
else
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
// --> OD 2006-07-20 #i63870#
// re-implement method on behalf of methods <_getDefaultAttributesImpl(..)> and
// <_getRunAttributesImpl(..)>
-Sequence<PropertyValue> SwAccessibleParagraph::getCharacterAttributes(
+uno::Sequence<PropertyValue> SwAccessibleParagraph::getCharacterAttributes(
sal_Int32 nIndex,
const uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( ! IsValidChar( nIndex, rText.getLength() ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
// retrieve default character attributes
tAccParaPropValMap aDefAttrSeq;
@@ -1236,7 +1236,7 @@ Sequence<PropertyValue> SwAccessibleParagraph::getCharacterAttributes(
_getRunAttributesImpl( nIndex, aRequestedAttributes, aRunAttrSeq );
// merge default and run attributes
- Sequence< PropertyValue > aValues( aDefAttrSeq.size() );
+ uno::Sequence< PropertyValue > aValues( aDefAttrSeq.size() );
PropertyValue* pValues = aValues.getArray();
sal_Int32 i = 0;
for ( tAccParaPropValMap::const_iterator aDefIter = aDefAttrSeq.begin();
@@ -1354,7 +1354,7 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
const SfxPoolItem* pItem = pSet->GetItem( aPropIt->nWID );
if ( pItem )
{
- Any aVal;
+ uno::Any aVal;
pItem->QueryValue( aVal, aPropIt->nMemberId );
PropertyValue rPropVal;
@@ -1372,14 +1372,14 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
// add property value entry for the paragraph style
if ( !bOnlyCharAttrs && pTxtNode->GetTxtColl() )
{
- const OUString sParaStyleName =
- OUString::createFromAscii(
+ const ::rtl::OUString sParaStyleName =
+ ::rtl::OUString::createFromAscii(
GetPropName( UNO_NAME_PARA_STYLE_NAME ).pName );
if ( aDefAttrSeq.find( sParaStyleName ) == aDefAttrSeq.end() )
{
PropertyValue rPropVal;
rPropVal.Name = sParaStyleName;
- Any aVal( makeAny( OUString( pTxtNode->GetTxtColl()->GetName() ) ) );
+ uno::Any aVal( uno::makeAny( ::rtl::OUString( pTxtNode->GetTxtColl()->GetName() ) ) );
rPropVal.Value = aVal;
rPropVal.Handle = -1;
rPropVal.State = beans::PropertyState_DEFAULT_VALUE;
@@ -1393,8 +1393,8 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
// resolve value text::WritingMode2::PAGE of property value entry WritingMode
if ( !bOnlyCharAttrs && GetFrm() )
{
- const OUString sWritingMode =
- OUString::createFromAscii(
+ const ::rtl::OUString sWritingMode =
+ ::rtl::OUString::createFromAscii(
GetPropName( UNO_NAME_WRITING_MODE ).pName );
tAccParaPropValMap::iterator aIter = aDefAttrSeq.find( sWritingMode );
if ( aIter != aDefAttrSeq.end() )
@@ -1447,7 +1447,7 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
}
else
{
- const OUString* pReqAttrs = aRequestedAttributes.getConstArray();
+ const ::rtl::OUString* pReqAttrs = aRequestedAttributes.getConstArray();
const sal_Int32 nLength = aRequestedAttributes.getLength();
for( sal_Int32 i = 0; i < nLength; ++i )
{
@@ -1460,8 +1460,8 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
}
}
-Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
- const Sequence< ::rtl::OUString >& aRequestedAttributes )
+uno::Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
+ const uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
throw ( uno::RuntimeException )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1470,7 +1470,30 @@ Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
tAccParaPropValMap aDefAttrSeq;
_getDefaultAttributesImpl( aRequestedAttributes, aDefAttrSeq );
- Sequence< PropertyValue > aValues( aDefAttrSeq.size() );
+ // --> OD 2010-03-08 #i92233#
+ static rtl::OUString sMMToPixelRatio( rtl::OUString::createFromAscii( "MMToPixelRatio" ) );
+ bool bProvideMMToPixelRatio( false );
+ {
+ if ( aRequestedAttributes.getLength() == 0 )
+ {
+ bProvideMMToPixelRatio = true;
+ }
+ else
+ {
+ const rtl::OUString* aRequestedAttrIter =
+ ::std::find( ::comphelper::stl_begin( aRequestedAttributes ),
+ ::comphelper::stl_end( aRequestedAttributes ),
+ sMMToPixelRatio );
+ if ( aRequestedAttrIter != ::comphelper::stl_end( aRequestedAttributes ) )
+ {
+ bProvideMMToPixelRatio = true;
+ }
+ }
+ }
+ // <--
+
+ uno::Sequence< PropertyValue > aValues( aDefAttrSeq.size() +
+ ( bProvideMMToPixelRatio ? 1 : 0 ) );
PropertyValue* pValues = aValues.getArray();
sal_Int32 i = 0;
for ( tAccParaPropValMap::const_iterator aIter = aDefAttrSeq.begin();
@@ -1481,6 +1504,21 @@ Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
++i;
}
+ // --> OD 2010-03-08 #i92233#
+ if ( bProvideMMToPixelRatio )
+ {
+ PropertyValue rPropVal;
+ rPropVal.Name = sMMToPixelRatio;
+ const Size a100thMMSize( 1000, 1000 );
+ const Size aPixelSize = GetMap()->LogicToPixel( a100thMMSize );
+ const float fRatio = ((float)a100thMMSize.Width()/100)/aPixelSize.Width();
+ rPropVal.Value = uno::makeAny( fRatio );
+ rPropVal.Handle = -1;
+ rPropVal.State = beans::PropertyState_DEFAULT_VALUE;
+ pValues[ aValues.getLength() - 1 ] = rPropVal;
+ }
+ // <--
+
return aValues;
}
@@ -1557,7 +1595,7 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
// the corresponding default character attributes, are excluded.
if ( aSet.GetItemState( aPropIt->nWID, TRUE, &pItem ) == SFX_ITEM_SET )
{
- Any aVal;
+ uno::Any aVal;
pItem->QueryValue( aVal, aPropIt->nMemberId );
PropertyValue rPropVal;
@@ -1585,7 +1623,7 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
}
else
{
- const OUString* pReqAttrs = aRequestedAttributes.getConstArray();
+ const ::rtl::OUString* pReqAttrs = aRequestedAttributes.getConstArray();
const sal_Int32 nLength = aRequestedAttributes.getLength();
for( sal_Int32 i = 0; i < nLength; ++i )
{
@@ -1601,27 +1639,27 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
delete pPaM;
}
-Sequence< PropertyValue > SwAccessibleParagraph::getRunAttributes(
+uno::Sequence< PropertyValue > SwAccessibleParagraph::getRunAttributes(
sal_Int32 nIndex,
- const Sequence< ::rtl::OUString >& aRequestedAttributes )
- throw ( IndexOutOfBoundsException,
+ const uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
{
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if ( !IsValidChar( nIndex, rText.getLength() ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
}
tAccParaPropValMap aRunAttrSeq;
_getRunAttributesImpl( nIndex, aRequestedAttributes, aRunAttrSeq );
- Sequence< PropertyValue > aValues( aRunAttrSeq.size() );
+ uno::Sequence< PropertyValue > aValues( aRunAttrSeq.size() );
PropertyValue* pValues = aValues.getArray();
sal_Int32 i = 0;
for ( tAccParaPropValMap::const_iterator aIter = aRunAttrSeq.begin();
@@ -1638,7 +1676,7 @@ Sequence< PropertyValue > SwAccessibleParagraph::getRunAttributes(
awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1649,7 +1687,7 @@ awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
IsValidChar -> IsValidPosition
*/
if( ! (IsValidPosition( nIndex, GetString().getLength() ) ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
/* #i12332# */
sal_Bool bBehindText = sal_False;
@@ -1689,7 +1727,7 @@ awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
CHECK_FOR_WINDOW( XAccessibleComponent, pWin );
Rectangle aScreenRect( GetMap()->CoreToPixel( aCoreRect.SVRect() ));
- SwRect aFrmLogBounds( GetBounds() ); // twip rel to doc root
+ SwRect aFrmLogBounds( GetBounds( *(GetMap()) ) ); // twip rel to doc root
Point aFrmPixPos( GetMap()->CoreToPixel( aFrmLogBounds.SVRect() ).TopLeft() );
aScreenRect.Move( -aFrmPixPos.X(), -aFrmPixPos.Y() );
@@ -1701,7 +1739,7 @@ awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
}
sal_Int32 SwAccessibleParagraph::getCharacterCount()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1711,7 +1749,7 @@ sal_Int32 SwAccessibleParagraph::getCharacterCount()
}
sal_Int32 SwAccessibleParagraph::getIndexAtPoint( const awt::Point& rPoint )
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1727,7 +1765,7 @@ sal_Int32 SwAccessibleParagraph::getIndexAtPoint( const awt::Point& rPoint )
Window *pWin = GetWindow();
CHECK_FOR_WINDOW( XAccessibleComponent, pWin );
Point aPoint( rPoint.X, rPoint.Y );
- SwRect aLogBounds( GetBounds( GetFrm() ) ); // twip rel to doc root
+ SwRect aLogBounds( GetBounds( *(GetMap()), GetFrm() ) ); // twip rel to doc root
Point aPixPos( GetMap()->CoreToPixel( aLogBounds.SVRect() ).TopLeft() );
aPoint.X() += aPixPos.X();
aPoint.Y() += aPixPos.Y();
@@ -1787,8 +1825,8 @@ sal_Int32 SwAccessibleParagraph::getIndexAtPoint( const awt::Point& rPoint )
: -1L;
}
-OUString SwAccessibleParagraph::getSelectedText()
- throw (RuntimeException)
+::rtl::OUString SwAccessibleParagraph::getSelectedText()
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1796,11 +1834,13 @@ OUString SwAccessibleParagraph::getSelectedText()
sal_Int32 nStart, nEnd;
sal_Bool bSelected = GetSelection( nStart, nEnd );
- return bSelected ? GetString().copy( nStart, nEnd - nStart ) : OUString();
+ return bSelected
+ ? GetString().copy( nStart, nEnd - nStart )
+ : ::rtl::OUString();
}
sal_Int32 SwAccessibleParagraph::getSelectionStart()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1812,7 +1852,7 @@ sal_Int32 SwAccessibleParagraph::getSelectionStart()
}
sal_Int32 SwAccessibleParagraph::getSelectionEnd()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1824,7 +1864,7 @@ sal_Int32 SwAccessibleParagraph::getSelectionEnd()
}
sal_Bool SwAccessibleParagraph::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1834,7 +1874,7 @@ sal_Bool SwAccessibleParagraph::setSelection( sal_Int32 nStartIndex, sal_Int32 n
sal_Int32 nLength = GetString().getLength();
if ( ! IsValidRange( nStartIndex, nEndIndex, nLength ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
sal_Bool bRet = sal_False;
@@ -1859,8 +1899,8 @@ sal_Bool SwAccessibleParagraph::setSelection( sal_Int32 nStartIndex, sal_Int32 n
return bRet;
}
-OUString SwAccessibleParagraph::getText()
- throw (RuntimeException)
+::rtl::OUString SwAccessibleParagraph::getText()
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1869,15 +1909,15 @@ OUString SwAccessibleParagraph::getText()
return GetString();
}
-OUString SwAccessibleParagraph::getTextRange(
+::rtl::OUString SwAccessibleParagraph::getTextRange(
sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- OUString sText( GetString() );
+ ::rtl::OUString sText( GetString() );
if ( IsValidRange( nStartIndex, nEndIndex, sText.getLength() ) )
{
@@ -1885,7 +1925,7 @@ OUString SwAccessibleParagraph::getTextRange(
return sText.copy(nStartIndex, nEndIndex-nStartIndex );
}
else
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
/*accessibility::*/TextSegment SwAccessibleParagraph::getTextAtIndex( sal_Int32 nIndex, sal_Int16 nTextType ) throw (lang::IndexOutOfBoundsException, lang::IllegalArgumentException, uno::RuntimeException)
@@ -1898,7 +1938,7 @@ OUString SwAccessibleParagraph::getTextRange(
aResult.SegmentStart = -1;
aResult.SegmentEnd = -1;
- const OUString rText = GetString();
+ const ::rtl::OUString rText = GetString();
// implement the silly specification that first position after
// text must return an empty string, rather than throwing an
// IndexOutOfBoundsException, except for LINE, where the last
@@ -1907,7 +1947,7 @@ OUString SwAccessibleParagraph::getTextRange(
return aResult;
// with error checking
- Boundary aBound;
+ i18n::Boundary aBound;
sal_Bool bWord = GetTextBoundary( aBound, rText, nIndex, nTextType );
DBG_ASSERT( aBound.startPos >= 0, "illegal boundary" );
@@ -1930,14 +1970,14 @@ OUString SwAccessibleParagraph::getTextRange(
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- const OUString rText = GetString();
+ const ::rtl::OUString rText = GetString();
/*accessibility::*/TextSegment aResult;
aResult.SegmentStart = -1;
aResult.SegmentEnd = -1;
// get starting pos
- Boundary aBound;
+ i18n::Boundary aBound;
if (nIndex == rText.getLength())
aBound.startPos = aBound.endPos = nIndex;
else
@@ -1977,7 +2017,7 @@ OUString SwAccessibleParagraph::getTextRange(
/*accessibility::*/TextSegment aResult;
aResult.SegmentStart = -1;
aResult.SegmentEnd = -1;
- const OUString rText = GetString();
+ const ::rtl::OUString rText = GetString();
// implement the silly specification that first position after
// text must return an empty string, rather than throwing an
@@ -1987,7 +2027,7 @@ OUString SwAccessibleParagraph::getTextRange(
// get first word, then skip to next word
- Boundary aBound;
+ i18n::Boundary aBound;
GetTextBoundary( aBound, rText, nIndex, nTextType );
sal_Bool bWord = sal_False;
while( !bWord )
@@ -2009,7 +2049,7 @@ OUString SwAccessibleParagraph::getTextRange(
}
sal_Bool SwAccessibleParagraph::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2026,7 +2066,7 @@ sal_Bool SwAccessibleParagraph::copyText( sal_Int32 nStartIndex, sal_Int32 nEndI
//
sal_Bool SwAccessibleParagraph::cutText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
CHECK_FOR_DEFUNC( XAccessibleEditableText );
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2041,7 +2081,7 @@ sal_Bool SwAccessibleParagraph::cutText( sal_Int32 nStartIndex, sal_Int32 nEndIn
}
sal_Bool SwAccessibleParagraph::pasteText( sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
CHECK_FOR_DEFUNC( XAccessibleEditableText );
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2056,27 +2096,27 @@ sal_Bool SwAccessibleParagraph::pasteText( sal_Int32 nIndex )
}
sal_Bool SwAccessibleParagraph::deleteText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
- return replaceText( nStartIndex, nEndIndex, OUString() );
+ return replaceText( nStartIndex, nEndIndex, ::rtl::OUString() );
}
-sal_Bool SwAccessibleParagraph::insertText( const OUString& sText, sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+sal_Bool SwAccessibleParagraph::insertText( const ::rtl::OUString& sText, sal_Int32 nIndex )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
return replaceText( nIndex, nIndex, sText );
}
sal_Bool SwAccessibleParagraph::replaceText(
sal_Int32 nStartIndex, sal_Int32 nEndIndex,
- const OUString& sReplacement )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ const ::rtl::OUString& sReplacement )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleEditableText );
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( IsValidRange( nStartIndex, nEndIndex, rText.getLength() ) )
{
@@ -2114,7 +2154,7 @@ sal_Bool SwAccessibleParagraph::replaceText(
return bSuccess;
}
else
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
struct IndexCompare
@@ -2131,16 +2171,16 @@ struct IndexCompare
sal_Bool SwAccessibleParagraph::setAttributes(
sal_Int32 nStartIndex,
sal_Int32 nEndIndex,
- const Sequence<PropertyValue>& rAttributeSet )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ const uno::Sequence<PropertyValue>& rAttributeSet )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleEditableText );
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( ! IsValidRange( nStartIndex, nEndIndex, rText.getLength() ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
if( !IsEditableState() )
return sal_False;
@@ -2161,10 +2201,10 @@ sal_Bool SwAccessibleParagraph::setAttributes(
sort( &pIndices[0], &pIndices[nLength], IndexCompare(pPairs) );
// create sorted sequences accoring to index array
- Sequence<OUString> aNames( nLength );
- OUString* pNames = aNames.getArray();
- Sequence<Any> aValues( nLength );
- Any* pValues = aValues.getArray();
+ uno::Sequence< ::rtl::OUString > aNames( nLength );
+ ::rtl::OUString* pNames = aNames.getArray();
+ uno::Sequence< uno::Any > aValues( nLength );
+ uno::Any* pValues = aValues.getArray();
for( i = 0; i < nLength; i++ )
{
const PropertyValue& rVal = pPairs[pIndices[i]];
@@ -2188,8 +2228,8 @@ sal_Bool SwAccessibleParagraph::setAttributes(
return bRet;
}
-sal_Bool SwAccessibleParagraph::setText( const OUString& sText )
- throw (RuntimeException)
+sal_Bool SwAccessibleParagraph::setText( const ::rtl::OUString& sText )
+ throw (uno::RuntimeException)
{
return replaceText(0, GetString().getLength(), sText);
}
@@ -2198,7 +2238,7 @@ sal_Bool SwAccessibleParagraph::setText( const OUString& sText )
void SwAccessibleParagraph::selectAccessibleChild(
sal_Int32 nChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2208,7 +2248,7 @@ void SwAccessibleParagraph::selectAccessibleChild(
sal_Bool SwAccessibleParagraph::isAccessibleChildSelected(
sal_Int32 nChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2242,7 +2282,7 @@ sal_Int32 SwAccessibleParagraph::getSelectedAccessibleChildCount( )
uno::Reference<XAccessible> SwAccessibleParagraph::getSelectedAccessibleChild(
sal_Int32 nSelectedChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException)
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2253,7 +2293,7 @@ uno::Reference<XAccessible> SwAccessibleParagraph::getSelectedAccessibleChild(
// --> OD 2004-11-16 #111714# - index has to be treated as global child index.
void SwAccessibleParagraph::deselectAccessibleChild(
sal_Int32 nChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2315,7 +2355,7 @@ const SwTxtAttr *SwHyperlinkIter_Impl::next()
};
sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkCount()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2337,7 +2377,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkCount()
uno::Reference< XAccessibleHyperlink > SAL_CALL
SwAccessibleParagraph::getHyperLink( sal_Int32 nLinkIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleHypertext );
@@ -2386,13 +2426,13 @@ uno::Reference< XAccessibleHyperlink > SAL_CALL
}
if( !xRet.is() )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
return xRet;
}
sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkIndex( sal_Int32 nCharIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleHypertext );
@@ -2401,7 +2441,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkIndex( sal_Int32 nCharInde
sal_Int32 nLength = GetString().getLength();
if ( ! IsValidPosition( nCharIndex, nLength ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
sal_Int32 nRet = -1;
@@ -2430,13 +2470,30 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkIndex( sal_Int32 nCharInde
}
// --> OD 2008-05-26 #i71360#
+// --> OD 2010-02-22 #i108125# - adjustments for change tracking text markup
sal_Int32 SAL_CALL SwAccessibleParagraph::getTextMarkupCount( sal_Int32 nTextMarkupType )
throw (lang::IllegalArgumentException,
uno::RuntimeException)
{
- SwTextMarkupHelper aTextMarkupHelper( *GetTxtNode(), GetPortionData() );
+ std::auto_ptr<SwTextMarkupHelper> pTextMarkupHelper;
+ switch ( nTextMarkupType )
+ {
+ case text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ case text::TextMarkupType::TRACK_CHANGE_DELETION:
+ case text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper(
+ GetPortionData(),
+ *(mpParaChangeTrackInfo->getChangeTrackingTextMarkupList( nTextMarkupType ) )) );
+ }
+ break;
+ default:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper( GetPortionData(), *GetTxtNode() ) );
+ }
+ }
- return aTextMarkupHelper.getTextMarkupCount( nTextMarkupType );
+ return pTextMarkupHelper->getTextMarkupCount( nTextMarkupType );
}
/*accessibility::*/TextSegment SAL_CALL
@@ -2446,9 +2503,25 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getTextMarkupCount( sal_Int32 nTextMar
lang::IllegalArgumentException,
uno::RuntimeException)
{
- SwTextMarkupHelper aTextMarkupHelper( *GetTxtNode(), GetPortionData() );
+ std::auto_ptr<SwTextMarkupHelper> pTextMarkupHelper;
+ switch ( nTextMarkupType )
+ {
+ case text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ case text::TextMarkupType::TRACK_CHANGE_DELETION:
+ case text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper(
+ GetPortionData(),
+ *(mpParaChangeTrackInfo->getChangeTrackingTextMarkupList( nTextMarkupType ) )) );
+ }
+ break;
+ default:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper( GetPortionData(), *GetTxtNode() ) );
+ }
+ }
- return aTextMarkupHelper.getTextMarkup( nTextMarkupIndex, nTextMarkupType );
+ return pTextMarkupHelper->getTextMarkup( nTextMarkupIndex, nTextMarkupType );
}
uno::Sequence< /*accessibility::*/TextSegment > SAL_CALL
@@ -2465,9 +2538,25 @@ uno::Sequence< /*accessibility::*/TextSegment > SAL_CALL
throw lang::IndexOutOfBoundsException();
}
- SwTextMarkupHelper aTextMarkupHelper( *GetTxtNode(), GetPortionData() );
+ std::auto_ptr<SwTextMarkupHelper> pTextMarkupHelper;
+ switch ( nTextMarkupType )
+ {
+ case text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ case text::TextMarkupType::TRACK_CHANGE_DELETION:
+ case text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper(
+ GetPortionData(),
+ *(mpParaChangeTrackInfo->getChangeTrackingTextMarkupList( nTextMarkupType ) )) );
+ }
+ break;
+ default:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper( GetPortionData(), *GetTxtNode() ) );
+ }
+ }
- return aTextMarkupHelper.getTextMarkupAtIndex( nCharIndex, nTextMarkupType );
+ return pTextMarkupHelper->getTextMarkupAtIndex( nCharIndex, nTextMarkupType );
}
// <--
@@ -2499,7 +2588,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getLineNumberAtIndex( sal_Int32 nIndex
throw lang::IndexOutOfBoundsException();
}
- Boundary aLineBound;
+ i18n::Boundary aLineBound;
GetPortionData().GetBoundaryOfLine( nLineNo, aLineBound );
/*accessibility::*/TextSegment aTextAtLine;
@@ -2541,7 +2630,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret()
// special handling for cursor positioned at end of text line via End key
if ( nCaretPos != 0 )
{
- Boundary aLineBound;
+ i18n::Boundary aLineBound;
GetPortionData().GetBoundaryOfLine( nLineNo, aLineBound );
if ( nCaretPos == aLineBound.startPos )
{
@@ -2557,7 +2646,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret()
Rectangle aScreenRect( GetMap()->CoreToPixel( aCursorCoreRect.SVRect() ));
- SwRect aFrmLogBounds( GetBounds() ); // twip rel to doc root
+ SwRect aFrmLogBounds( GetBounds( *(GetMap()) ) ); // twip rel to doc root
Point aFrmPixPos( GetMap()->CoreToPixel( aFrmLogBounds.SVRect() ).TopLeft() );
aScreenRect.Move( -aFrmPixPos.X(), -aFrmPixPos.Y() );
@@ -2579,4 +2668,11 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret()
return nLineNo;
}
+// --> OD 2010-02-19 #i108125#
+void SwAccessibleParagraph::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
+{
+ mpParaChangeTrackInfo->reset();
+
+ SwClient::Modify( pOld, pNew );
+}
// <--
diff --git a/sw/source/core/access/accpara.hxx b/sw/source/core/access/accpara.hxx
index 1a745d8af01e..7e07fa132d05 100644
--- a/sw/source/core/access/accpara.hxx
+++ b/sw/source/core/access/accpara.hxx
@@ -26,24 +26,19 @@
************************************************************************/
#ifndef _ACCPARA_HXX
#define _ACCPARA_HXX
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+
+#include <acccontext.hxx>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
#include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
-// --> OD 2008-05-19 #i71360#
#include <com/sun/star/accessibility/XAccessibleTextMarkup.hpp>
-// <--
-// --> OD 2008-05-29 #i89175#
#include <com/sun/star/accessibility/XAccessibleMultiLineText.hpp>
-// <--
-
-// --> OD 2006-07-11 #i63870#
#include <com/sun/star/accessibility/XAccessibleTextAttributes.hpp>
#include <hash_map>
+#include <accselectionhelper.hxx>
+// --> OD 2010-02-19 #i108125#
+#include <calbck.hxx>
// <--
-#include "accselectionhelper.hxx"
class SwTxtFrm;
class SwTxtNode;
@@ -51,6 +46,10 @@ class SwPaM;
class SwAccessiblePortionData;
class SwAccessibleHyperTextData;
class SwXTextPortion;
+// --> OD 2010-02-19 #i108125#
+class SwParaChangeTrackingInfo;
+// <--
+
namespace rtl { class OUString; }
namespace com { namespace sun { namespace star {
namespace i18n { struct Boundary; }
@@ -63,19 +62,16 @@ typedef ::std::hash_map< ::rtl::OUString,
::std::equal_to< ::rtl::OUString > > tAccParaPropValMap;
class SwAccessibleParagraph :
+ // --> OD 2010-02-19 #i108125#
+ public SwClient,
+ // <--
public SwAccessibleContext,
public ::com::sun::star::accessibility::XAccessibleEditableText,
public com::sun::star::accessibility::XAccessibleSelection,
public com::sun::star::accessibility::XAccessibleHypertext,
- // --> OD 2008-05-19 #i71360#
public com::sun::star::accessibility::XAccessibleTextMarkup,
- // <--
- // --> OD 2008-05-29 #i89175#
public com::sun::star::accessibility::XAccessibleMultiLineText,
- // <--
- // --> OD 2006-07-11 #i63870#
public ::com::sun::star::accessibility::XAccessibleTextAttributes
- // <--
{
friend class SwAccessibleHyperlink;
@@ -98,6 +94,9 @@ class SwAccessibleParagraph :
// implementation for XAccessibleSelection
SwAccessibleSelectionHelper aSelectionHelper;
+ // --> OD 2010-02-19 #i108125#
+ SwParaChangeTrackingInfo* mpParaChangeTrackInfo;
+ // <--
/// get the SwTxtNode (requires frame; check before)
const SwTxtNode* GetTxtNode() const;
@@ -237,13 +236,17 @@ protected:
public:
- SwAccessibleParagraph( SwAccessibleMap* pInitMap,
- const SwTxtFrm *pTxtFrm );
+ SwAccessibleParagraph( SwAccessibleMap& rInitMap,
+ const SwTxtFrm& rTxtFrm );
inline operator ::com::sun::star::accessibility::XAccessibleText *();
virtual sal_Bool HasCursor(); // required by map to remember that object
+ // --> OD 2010-02-19 #i108125#
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew);
+ // <--
+
//===== XAccessibleContext ==============================================
/// Return this object's description.
diff --git a/sw/source/core/access/accselectionhelper.cxx b/sw/source/core/access/accselectionhelper.cxx
index 31f05063263e..8e4593377c63 100644
--- a/sw/source/core/access/accselectionhelper.cxx
+++ b/sw/source/core/access/accselectionhelper.cxx
@@ -32,15 +32,14 @@
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
#include <accselectionhelper.hxx>
-#ifndef _ACCCONTEXT_HXX
#include <acccontext.hxx>
-#endif
#include <accmap.hxx>
#include <svx/AccessibleShape.hxx>
#include <viewsh.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <vcl/svapp.hxx> // for SolarMutex
#include <tools/debug.hxx>
+#include <flyfrm.hxx>
using namespace ::com::sun::star;
@@ -50,7 +49,7 @@ using ::com::sun::star::accessibility::XAccessible;
using ::com::sun::star::accessibility::XAccessibleContext;
using ::com::sun::star::accessibility::XAccessibleSelection;
-
+using namespace ::sw::access;
SwAccessibleSelectionHelper::SwAccessibleSelectionHelper(
SwAccessibleContext& rCtxt ) :
@@ -100,7 +99,8 @@ void SwAccessibleSelectionHelper::selectAccessibleChild(
vos::OGuard aGuard(Application::GetSolarMutex());
// Get the respective child as SwFrm (also do index checking), ...
- const SwFrmOrObj aChild = rContext.GetChild( nChildIndex );
+ const SwAccessibleChild aChild = rContext.GetChild( *(rContext.GetMap()),
+ nChildIndex );
if( !aChild.IsValid() )
throwIndexOutOfBoundsException();
@@ -110,7 +110,7 @@ void SwAccessibleSelectionHelper::selectAccessibleChild(
SwFEShell* pFEShell = GetFEShell();
if( pFEShell != NULL )
{
- const SdrObject *pObj = aChild.GetSdrObject();
+ const SdrObject *pObj = aChild.GetDrawObject();
if( pObj )
{
bRet = rContext.Select( const_cast< SdrObject *>( pObj ), 0==aChild.GetSwFrm());
@@ -129,7 +129,8 @@ sal_Bool SwAccessibleSelectionHelper::isAccessibleChildSelected(
vos::OGuard aGuard(Application::GetSolarMutex());
// Get the respective child as SwFrm (also do index checking), ...
- const SwFrmOrObj aChild = rContext.GetChild( nChildIndex );
+ const SwAccessibleChild aChild = rContext.GetChild( *(rContext.GetMap()),
+ nChildIndex );
if( !aChild.IsValid() )
throwIndexOutOfBoundsException();
@@ -138,13 +139,13 @@ sal_Bool SwAccessibleSelectionHelper::isAccessibleChildSelected(
SwFEShell* pFEShell = GetFEShell();
if( pFEShell )
{
- if( aChild.GetSwFrm() != 0 )
+ if ( aChild.GetSwFrm() != 0 )
{
bRet = (pFEShell->GetCurrFlyFrm() == aChild.GetSwFrm());
}
- else
+ else if ( aChild.GetDrawObject() )
{
- bRet = pFEShell->IsObjSelected( *aChild.GetSdrObject() );
+ bRet = pFEShell->IsObjSelected( *aChild.GetDrawObject() );
}
}
@@ -168,15 +169,15 @@ void SwAccessibleSelectionHelper::selectAllAccessibleChildren( )
SwFEShell* pFEShell = GetFEShell();
if( pFEShell )
{
- ::std::list< SwFrmOrObj > aChildren;
- rContext.GetChildren( aChildren );
+ ::std::list< SwAccessibleChild > aChildren;
+ rContext.GetChildren( *(rContext.GetMap()), aChildren );
- ::std::list< SwFrmOrObj >::const_iterator aIter = aChildren.begin();
- ::std::list< SwFrmOrObj >::const_iterator aEndIter = aChildren.end();
+ ::std::list< SwAccessibleChild >::const_iterator aIter = aChildren.begin();
+ ::std::list< SwAccessibleChild >::const_iterator aEndIter = aChildren.end();
while( aIter != aEndIter )
{
- const SwFrmOrObj& rChild = *aIter;
- const SdrObject *pObj = rChild.GetSdrObject();
+ const SwAccessibleChild& rChild = *aIter;
+ const SdrObject* pObj = rChild.GetDrawObject();
const SwFrm* pFrm = rChild.GetSwFrm();
if( pObj && !(pFrm != 0 && pFEShell->IsObjSelected()) )
{
@@ -200,11 +201,11 @@ sal_Int32 SwAccessibleSelectionHelper::getSelectedAccessibleChildCount( )
SwFEShell* pFEShell = GetFEShell();
if( pFEShell != 0 )
{
- const SwFlyFrm *pFlyFrm = pFEShell->GetCurrFlyFrm();
+ const SwFlyFrm* pFlyFrm = pFEShell->GetCurrFlyFrm();
if( pFlyFrm )
{
- if( rContext.GetParent(pFlyFrm, rContext.IsInPagePreview()) ==
- rContext.GetFrm() )
+ if( rContext.GetParent( SwAccessibleChild(pFlyFrm), rContext.IsInPagePreview()) ==
+ rContext.GetFrm() )
{
nCount = 1;
}
@@ -214,20 +215,20 @@ sal_Int32 SwAccessibleSelectionHelper::getSelectedAccessibleChildCount( )
sal_uInt16 nSelObjs = pFEShell->IsObjSelected();
if( nSelObjs > 0 )
{
- ::std::list< SwFrmOrObj > aChildren;
- rContext.GetChildren( aChildren );
+ ::std::list< SwAccessibleChild > aChildren;
+ rContext.GetChildren( *(rContext.GetMap()), aChildren );
- ::std::list< SwFrmOrObj >::const_iterator aIter =
+ ::std::list< SwAccessibleChild >::const_iterator aIter =
aChildren.begin();
- ::std::list< SwFrmOrObj >::const_iterator aEndIter =
+ ::std::list< SwAccessibleChild >::const_iterator aEndIter =
aChildren.end();
while( aIter != aEndIter && nCount < nSelObjs )
{
- const SwFrmOrObj& rChild = *aIter;
- if( rChild.GetSdrObject() && !rChild.GetSwFrm() &&
+ const SwAccessibleChild& rChild = *aIter;
+ if( rChild.GetDrawObject() && !rChild.GetSwFrm() &&
rContext.GetParent(rChild, rContext.IsInPagePreview())
== rContext.GetFrm() &&
- pFEShell->IsObjSelected( *rChild.GetSdrObject() ) )
+ pFEShell->IsObjSelected( *rChild.GetDrawObject() ) )
{
nCount++;
}
@@ -254,12 +255,12 @@ Reference<XAccessible> SwAccessibleSelectionHelper::getSelectedAccessibleChild(
if( 0 == pFEShell )
throwIndexOutOfBoundsException();
- SwFrmOrObj aChild;
+ SwAccessibleChild aChild;
const SwFlyFrm *pFlyFrm = pFEShell->GetCurrFlyFrm();
if( pFlyFrm )
{
if( 0 == nSelectedChildIndex &&
- rContext.GetParent(pFlyFrm, rContext.IsInPagePreview()) ==
+ rContext.GetParent( SwAccessibleChild(pFlyFrm), rContext.IsInPagePreview()) ==
rContext.GetFrm() )
{
aChild = pFlyFrm;
@@ -271,18 +272,18 @@ Reference<XAccessible> SwAccessibleSelectionHelper::getSelectedAccessibleChild(
if( 0 == nSelObjs || nSelectedChildIndex >= nSelObjs )
throwIndexOutOfBoundsException();
- ::std::list< SwFrmOrObj > aChildren;
- rContext.GetChildren( aChildren );
+ ::std::list< SwAccessibleChild > aChildren;
+ rContext.GetChildren( *(rContext.GetMap()), aChildren );
- ::std::list< SwFrmOrObj >::const_iterator aIter = aChildren.begin();
- ::std::list< SwFrmOrObj >::const_iterator aEndIter = aChildren.end();
+ ::std::list< SwAccessibleChild >::const_iterator aIter = aChildren.begin();
+ ::std::list< SwAccessibleChild >::const_iterator aEndIter = aChildren.end();
while( aIter != aEndIter && !aChild.IsValid() )
{
- const SwFrmOrObj& rChild = *aIter;
- if( rChild.GetSdrObject() && !rChild.GetSwFrm() &&
+ const SwAccessibleChild& rChild = *aIter;
+ if( rChild.GetDrawObject() && !rChild.GetSwFrm() &&
rContext.GetParent(rChild, rContext.IsInPagePreview()) ==
rContext.GetFrm() &&
- pFEShell->IsObjSelected( *rChild.GetSdrObject() ) )
+ pFEShell->IsObjSelected( *rChild.GetDrawObject() ) )
{
if( 0 == nSelectedChildIndex )
aChild = rChild;
@@ -309,10 +310,10 @@ Reference<XAccessible> SwAccessibleSelectionHelper::getSelectedAccessibleChild(
xChild = xChildImpl.getBodyPtr();
}
}
- else
+ else if ( aChild.GetDrawObject() )
{
::vos::ORef < ::accessibility::AccessibleShape > xChildImpl(
- rContext.GetMap()->GetContextImpl( aChild.GetSdrObject(),
+ rContext.GetMap()->GetContextImpl( aChild.GetDrawObject(),
&rContext, sal_True ) );
if( xChildImpl.isValid() )
xChild = xChildImpl.getBodyPtr();
@@ -328,6 +329,6 @@ void SwAccessibleSelectionHelper::deselectAccessibleChild(
{
// return sal_False // we can't deselect
if( nChildIndex < 0 ||
- nChildIndex >= rContext.GetChildCount() )
+ nChildIndex >= rContext.GetChildCount( *(rContext.GetMap()) ) )
throwIndexOutOfBoundsException();
}
diff --git a/sw/source/core/access/acctable.cxx b/sw/source/core/access/acctable.cxx
index 667319058fa1..43befb2a3f86 100644
--- a/sw/source/core/access/acctable.cxx
+++ b/sw/source/core/access/acctable.cxx
@@ -42,26 +42,25 @@
#include <vcl/svapp.hxx>
#include <frmfmt.hxx>
#include <tabfrm.hxx>
-// --> OD 2007-06-27 #i77106#
#include <rowfrm.hxx>
-// <--
#include <cellfrm.hxx>
#include <swtable.hxx>
-#include "crsrsh.hxx"
-#include "viscrs.hxx"
+#include <crsrsh.hxx>
+#include <viscrs.hxx>
#include <hints.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <accfrmobjslist.hxx>
-#include "accmap.hxx"
-#ifndef _ACCESS_HRC
-#include "access.hrc"
-#endif
+#include <accmap.hxx>
+#include <access.hrc>
#include <acctable.hxx>
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::accessibility;
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
+using namespace ::sw::access;
const sal_Char sServiceName[] = "com.sun.star.table.AccessibleTableView";
const sal_Char sImplementationName[] = "com.sun.star.comp.Writer.SwAccessibleTableView";
@@ -83,15 +82,14 @@ public:
class SwAccessibleTableData_Impl
{
+ SwAccessibleMap& mrAccMap;
Int32Set_Impl maRows;
Int32Set_Impl maColumns;
Int32PairList_Impl maExtents; // cell extends for event processing only
Point maTabFrmPos;
const SwTabFrm *mpTabFrm;
sal_Bool mbIsInPagePreview;
- // --> OD 2007-06-27 #i77106#
bool mbOnlyTableColumnHeader;
- // <--
void CollectData( const SwFrm *pFrm );
void CollectExtents( const SwFrm *pFrm );
@@ -114,7 +112,8 @@ class SwAccessibleTableData_Impl
public:
// --> OD 2007-06-27 #i77106#
// add third optional parameter <bOnlyTableColumnHeader>, default value <false>
- SwAccessibleTableData_Impl( const SwTabFrm *pTabFrm,
+ SwAccessibleTableData_Impl( SwAccessibleMap& rAccMap,
+ const SwTabFrm *pTabFrm,
sal_Bool bIsInPagePreview,
bool bOnlyTableColumnHeader = false );
// <--
@@ -154,12 +153,12 @@ public:
void SwAccessibleTableData_Impl::CollectData( const SwFrm *pFrm )
{
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
if( pLower )
{
@@ -189,12 +188,12 @@ void SwAccessibleTableData_Impl::CollectData( const SwFrm *pFrm )
void SwAccessibleTableData_Impl::CollectExtents( const SwFrm *pFrm )
{
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
if( pLower )
{
@@ -230,12 +229,12 @@ sal_Bool SwAccessibleTableData_Impl::FindCell(
{
sal_Bool bFound = sal_False;
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( !bFound && aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
ASSERT( pLower, "child should be a frame" );
if( pLower )
@@ -282,15 +281,15 @@ void SwAccessibleTableData_Impl::GetSelection(
SwAccTableSelHander_Impl& rSelHdl,
sal_Bool bColumns ) const
{
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
ASSERT( pLower, "child should be a frame" );
- const SwRect& rBox = rLower.GetBox();
+ const SwRect& rBox = rLower.GetBox( mrAccMap );
if( pLower && rBox.IsOver( rArea ) )
{
if( rLower.IsAccessible( mbIsInPagePreview ) )
@@ -430,15 +429,15 @@ sal_Bool SwAccessibleTableData_Impl::CompareExtents(
return sal_True;
}
-SwAccessibleTableData_Impl::SwAccessibleTableData_Impl( const SwTabFrm *pTabFrm,
+SwAccessibleTableData_Impl::SwAccessibleTableData_Impl( SwAccessibleMap& rAccMap,
+ const SwTabFrm *pTabFrm,
sal_Bool bIsInPagePreview,
bool bOnlyTableColumnHeader )
- : maTabFrmPos( pTabFrm->Frm().Pos() ),
- mpTabFrm( pTabFrm ),
- mbIsInPagePreview( bIsInPagePreview ),
- // --> OD 2007-06-27 #i77106#
- mbOnlyTableColumnHeader( bOnlyTableColumnHeader )
- // <--
+ : mrAccMap( rAccMap )
+ , maTabFrmPos( pTabFrm->Frm().Pos() )
+ , mpTabFrm( pTabFrm )
+ , mbIsInPagePreview( bIsInPagePreview )
+ , mbOnlyTableColumnHeader( bOnlyTableColumnHeader )
{
CollectData( mpTabFrm );
CollectExtents( mpTabFrm );
@@ -641,7 +640,7 @@ const SwTableBox* SwAccessibleTable::GetTableBox( sal_Int32 nChildIndex ) const
const SwTableBox* pBox = NULL;
// get table box for 'our' table cell
- SwFrmOrObj aCell( GetChild( nChildIndex ) );
+ SwAccessibleChild aCell( GetChild( *(const_cast<SwAccessibleMap*>(GetMap())), nChildIndex ) );
if( aCell.GetSwFrm() )
{
const SwFrm* pChildFrm = aCell.GetSwFrm();
@@ -855,7 +854,7 @@ uno::Sequence< sal_Int8 > SAL_CALL SwAccessibleTable::getImplementationId()
SwAccessibleTableData_Impl* SwAccessibleTable::CreateNewTableData()
{
const SwTabFrm* pTabFrm = static_cast<const SwTabFrm*>( GetFrm() );
- return new SwAccessibleTableData_Impl( pTabFrm, IsInPagePreview() );
+ return new SwAccessibleTableData_Impl( *GetMap(), pTabFrm, IsInPagePreview() );
}
// <--
@@ -907,24 +906,72 @@ OUString SAL_CALL SwAccessibleTable::getAccessibleRowDescription(
sal_Int32 nRow )
throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
- // TODO: Is there any reasonable we can do here?
- OUString sTmpDesc;
+ // --> OD 2010-03-10 #i87532#
+ // determine table cell in <nRow>th row and in first column of row header table
+ // and return its text content.
+ OUString sRowDesc;
GetTableData().CheckRowAndCol(nRow, 0, this);
- return sTmpDesc;
+ uno::Reference< XAccessibleTable > xTableRowHeader = getAccessibleRowHeaders();
+ if ( xTableRowHeader.is() )
+ {
+ uno::Reference< XAccessible > xRowHeaderCell =
+ xTableRowHeader->getAccessibleCellAt( nRow, 0 );
+ ASSERT( xRowHeaderCell.is(),
+ "<SwAccessibleTable::getAccessibleRowDescription(..)> - missing row header cell -> serious issue." );
+ uno::Reference< XAccessibleContext > xRowHeaderCellContext =
+ xRowHeaderCell->getAccessibleContext();
+ const sal_Int32 nCellChildCount( xRowHeaderCellContext->getAccessibleChildCount() );
+ for ( sal_Int32 nChildIndex = 0; nChildIndex < nCellChildCount; ++nChildIndex )
+ {
+ uno::Reference< XAccessible > xChild = xRowHeaderCellContext->getAccessibleChild( nChildIndex );
+ uno::Reference< XAccessibleText > xChildText( xChild, uno::UNO_QUERY );
+ if ( xChildText.is() )
+ {
+ sRowDesc = sRowDesc + xChildText->getText();
+ }
+ }
+ }
+
+ return sRowDesc;
+ // <--
}
OUString SAL_CALL SwAccessibleTable::getAccessibleColumnDescription(
sal_Int32 nColumn )
throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
- // TODO: Is there any reasonable we can do here?
- OUString sTmpDesc;
+ // --> OD 2010-03-10 #i87532#
+ // determine table cell in first row and in <nColumn>th column of column header table
+ // and return its text content.
+ OUString sColumnDesc;
GetTableData().CheckRowAndCol(0, nColumn, this);
- return sTmpDesc;
+ uno::Reference< XAccessibleTable > xTableColumnHeader = getAccessibleColumnHeaders();
+ if ( xTableColumnHeader.is() )
+ {
+ uno::Reference< XAccessible > xColumnHeaderCell =
+ xTableColumnHeader->getAccessibleCellAt( 0, nColumn );
+ ASSERT( xColumnHeaderCell.is(),
+ "<SwAccessibleTable::getAccessibleColumnDescription(..)> - missing column header cell -> serious issue." );
+ uno::Reference< XAccessibleContext > xColumnHeaderCellContext =
+ xColumnHeaderCell->getAccessibleContext();
+ const sal_Int32 nCellChildCount( xColumnHeaderCellContext->getAccessibleChildCount() );
+ for ( sal_Int32 nChildIndex = 0; nChildIndex < nCellChildCount; ++nChildIndex )
+ {
+ uno::Reference< XAccessible > xChild = xColumnHeaderCellContext->getAccessibleChild( nChildIndex );
+ uno::Reference< XAccessibleText > xChildText( xChild, uno::UNO_QUERY );
+ if ( xChildText.is() )
+ {
+ sColumnDesc = sColumnDesc + xChildText->getText();
+ }
+ }
+ }
+
+ return sColumnDesc;
+ // <--
}
sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleRowExtentAt(
@@ -1001,9 +1048,18 @@ uno::Reference< XAccessibleTable > SAL_CALL
SwAccessibleTable::getAccessibleColumnHeaders( )
throw (uno::RuntimeException)
{
- // --> OD 2007-06-29 #i77106#
- return new SwAccessibleTableColHeaders(
- GetMap(), static_cast< const SwTabFrm *>( GetFrm() ) );
+ // --> OD 2010-03-10 #i87532#
+ // assure that return accesible object is empty, if no column header exists.
+ SwAccessibleTableColHeaders* pTableColHeaders =
+ new SwAccessibleTableColHeaders( GetMap(), static_cast< const SwTabFrm *>( GetFrm() ) );
+ uno::Reference< XAccessibleTable > xTableColumnHeaders( pTableColHeaders );
+ if ( pTableColHeaders->getAccessibleChildCount() <= 0 )
+ {
+ return uno::Reference< XAccessibleTable >();
+ }
+
+ return xTableColumnHeaders;
+ // <--
}
uno::Sequence< sal_Int32 > SAL_CALL SwAccessibleTable::getSelectedAccessibleRows()
@@ -1176,9 +1232,11 @@ sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleIndex(
CHECK_FOR_DEFUNC( XAccessibleTable )
- SwFrmOrObj aCell( GetTableData().GetCell( nRow, nColumn, sal_False, this ));
- if( aCell.IsValid() )
- nRet = GetChildIndex( aCell );
+ SwAccessibleChild aCell( GetTableData().GetCell( nRow, nColumn, sal_False, this ));
+ if ( aCell.IsValid() )
+ {
+ nRet = GetChildIndex( *(GetMap()), aCell );
+ }
return nRet;
}
@@ -1200,8 +1258,8 @@ sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleRow( sal_Int32 nChildIndex )
}
// <--
- SwFrmOrObj aCell( GetChild( nChildIndex ) );
- if( aCell.GetSwFrm() )
+ SwAccessibleChild aCell( GetChild( *(GetMap()), nChildIndex ) );
+ if ( aCell.GetSwFrm() )
{
sal_Int32 nTop = aCell.GetSwFrm()->Frm().Top();
nTop -= GetFrm()->Frm().Top();
@@ -1239,8 +1297,8 @@ sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleColumn(
}
// <--
- SwFrmOrObj aCell( GetChild( nChildIndex ) );
- if( aCell.GetSwFrm() )
+ SwAccessibleChild aCell( GetChild( *(GetMap()), nChildIndex ) );
+ if ( aCell.GetSwFrm() )
{
sal_Int32 nLeft = aCell.GetSwFrm()->Frm().Left();
nLeft -= GetFrm()->Frm().Left();
@@ -1307,8 +1365,8 @@ void SwAccessibleTable::Dispose( sal_Bool bRecursive )
SwAccessibleContext::Dispose( bRecursive );
}
-void SwAccessibleTable::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
- sal_Bool bRecursive )
+void SwAccessibleTable::DisposeChild( const SwAccessibleChild& rChildFrmOrObj,
+ sal_Bool bRecursive )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1330,7 +1388,7 @@ void SwAccessibleTable::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
SwAccessibleContext::DisposeChild( rChildFrmOrObj, bRecursive );
}
-void SwAccessibleTable::InvalidateChildPosOrSize( const SwFrmOrObj& rChildFrmOrObj,
+void SwAccessibleTable::InvalidateChildPosOrSize( const SwAccessibleChild& rChildFrmOrObj,
const SwRect& rOldBox )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1358,15 +1416,9 @@ void SwAccessibleTable::InvalidateChildPosOrSize( const SwFrmOrObj& rChildFrmOrO
}
}
- // There are two reason why this method has been called. The first one
- // is there is no context for pFrm. The method is them called by
- // the map, and we have to call our superclass.
- // The other situation is that we have been call by a call to get notified
- // about its change. We then must not call the superclass
- ASSERT( rChildFrmOrObj.GetSwFrm(), "frame expected" );
- uno::Reference< XAccessible > xAcc( GetMap()->GetContext( rChildFrmOrObj.GetSwFrm(), sal_False ) );
- if( !xAcc.is() )
- SwAccessibleContext::InvalidateChildPosOrSize( rChildFrmOrObj, rOldBox );
+ // --> OD 2010-02-18 #i013961# - always call super class method
+ SwAccessibleContext::InvalidateChildPosOrSize( rChildFrmOrObj, rOldBox );
+ // <--
}
@@ -1661,7 +1713,7 @@ SwAccessibleTableColHeaders::SwAccessibleTableColHeaders( SwAccessibleMap *pMap2
SwAccessibleTableData_Impl* SwAccessibleTableColHeaders::CreateNewTableData()
{
const SwTabFrm* pTabFrm = static_cast<const SwTabFrm*>( GetFrm() );
- return new SwAccessibleTableData_Impl( pTabFrm, IsInPagePreview(), true );
+ return new SwAccessibleTableData_Impl( *(GetMap()), pTabFrm, IsInPagePreview(), true );
}
@@ -1687,11 +1739,11 @@ sal_Int32 SAL_CALL SwAccessibleTableColHeaders::getAccessibleChildCount(void)
sal_Int32 nCount = 0;
const SwTabFrm* pTabFrm = static_cast<const SwTabFrm*>( GetFrm() );
- const SwFrmOrObjSList aVisList( GetVisArea(), pTabFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *pTabFrm, *(GetMap()) );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( IsInPagePreview() ) )
{
nCount++;
@@ -1702,7 +1754,8 @@ sal_Int32 SAL_CALL SwAccessibleTableColHeaders::getAccessibleChildCount(void)
if ( !rLower.GetSwFrm()->IsRowFrm() ||
pTabFrm->IsInHeadline( *(rLower.GetSwFrm()) ) )
{
- nCount += SwAccessibleFrame::GetChildCount( GetVisArea(),
+ nCount += SwAccessibleFrame::GetChildCount( *(GetMap()),
+ GetVisArea(),
rLower.GetSwFrm(),
IsInPagePreview() );
}
diff --git a/sw/source/core/access/acctable.hxx b/sw/source/core/access/acctable.hxx
index d874c86bcf3b..8bdf2e8b49b2 100644
--- a/sw/source/core/access/acctable.hxx
+++ b/sw/source/core/access/acctable.hxx
@@ -29,13 +29,16 @@
#include <com/sun/star/accessibility/XAccessibleTable.hpp>
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+#include <acccontext.hxx>
class SwTabFrm;
class SwAccessibleTableData_Impl;
class SwTableBox;
+class SwSelBoxes;
+
+namespace sw { namespace access {
+ class SwAccessibleChild;
+} }
class SwAccessibleTable :
public SwAccessibleContext,
@@ -218,9 +221,10 @@ public:
// The object is not visible an longer and should be destroyed
virtual void Dispose( sal_Bool bRecursive = sal_False );
- virtual void DisposeChild( const SwFrmOrObj& rFrmOrObj, sal_Bool bRecursive );
- virtual void InvalidateChildPosOrSize( const SwFrmOrObj& rFrmOrObj,
- const SwRect& rFrm );
+ virtual void DisposeChild( const sw::access::SwAccessibleChild& rFrmOrObj,
+ sal_Bool bRecursive );
+ virtual void InvalidateChildPosOrSize( const sw::access::SwAccessibleChild& rFrmOrObj,
+ const SwRect& rFrm );
//===== XAccessibleSelection ============================================
diff --git a/sw/source/core/access/makefile.mk b/sw/source/core/access/makefile.mk
index 20ffdad32118..72871314f722 100644
--- a/sw/source/core/access/makefile.mk
+++ b/sw/source/core/access/makefile.mk
@@ -63,7 +63,8 @@ SLOFILES = \
$(SLO)$/accselectionhelper.obj \
$(SLO)$/acctable.obj \
$(SLO)$/acctextframe.obj \
- $(SLO)$/textmarkuphelper.obj
+ $(SLO)$/textmarkuphelper.obj \
+ $(SLO)$/parachangetrackinginfo.obj
EXCEPTIONSFILES= \
$(SLO)$/acccell.obj \
@@ -89,7 +90,8 @@ EXCEPTIONSFILES= \
$(SLO)$/accselectionhelper.obj \
$(SLO)$/acctable.obj \
$(SLO)$/acctextframe.obj \
- $(SLO)$/textmarkuphelper.obj
+ $(SLO)$/textmarkuphelper.obj \
+ $(SLO)$/parachangetrackinginfo.obj
# --- Targets -------------------------------------------------------
diff --git a/sw/source/core/access/parachangetrackinginfo.cxx b/sw/source/core/access/parachangetrackinginfo.cxx
new file mode 100644
index 000000000000..7c1e25f05c93
--- /dev/null
+++ b/sw/source/core/access/parachangetrackinginfo.cxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_sw.hxx"
+
+#include <parachangetrackinginfo.hxx>
+
+#include <errhdl.hxx>
+#include <wrong.hxx>
+#include <com/sun/star/text/TextMarkupType.hpp>
+
+#include <txtfrm.hxx>
+#include <ndtxt.hxx>
+#include <IDocumentRedlineAccess.hxx>
+#include <docary.hxx>
+#include <redline.hxx>
+
+namespace css = com::sun::star;
+
+namespace {
+ void initChangeTrackTextMarkupLists( const SwTxtFrm& rTxtFrm,
+ SwWrongList*& opChangeTrackInsertionTextMarkupList,
+ SwWrongList*& opChangeTrackDeletionTextMarkupList,
+ SwWrongList*& opChangeTrackFormatChangeTextMarkupList )
+ {
+ opChangeTrackInsertionTextMarkupList = new SwWrongList( WRONGLIST_CHANGETRACKING );
+ opChangeTrackDeletionTextMarkupList = new SwWrongList( WRONGLIST_CHANGETRACKING );
+ opChangeTrackFormatChangeTextMarkupList = new SwWrongList( WRONGLIST_CHANGETRACKING );
+
+ if ( !rTxtFrm.GetTxtNode() )
+ {
+ ASSERT( false,
+ "<initChangeTrackTextMarkupLists(..) - missing <SwTxtNode> instance!" );
+ return;
+ }
+ const SwTxtNode& rTxtNode( *(rTxtFrm.GetTxtNode()) );
+
+ const IDocumentRedlineAccess* pIDocChangeTrack( rTxtNode.getIDocumentRedlineAccess() );
+ if ( !pIDocChangeTrack )
+ {
+ ASSERT( false,
+ "<initChangeTrackTextMarkupLists(..) - missing <IDocumentRedlineAccess> instance!" );
+ return;
+ }
+
+ if ( !IDocumentRedlineAccess::IsShowChanges( pIDocChangeTrack->GetRedlineMode() ) ||
+ pIDocChangeTrack->GetRedlineTbl().Count() == 0 )
+ {
+ // nothing to do --> empty change track text markup lists.
+ return;
+ }
+
+ const sal_uInt16 nIdxOfFirstRedlineForTxtNode =
+ pIDocChangeTrack->GetRedlinePos( rTxtNode, USHRT_MAX );
+ if ( nIdxOfFirstRedlineForTxtNode == USHRT_MAX )
+ {
+ // nothing to do --> empty change track text markup lists.
+ return;
+ }
+
+ const xub_StrLen nTxtFrmTextStartPos = rTxtFrm.IsFollow()
+ ? rTxtFrm.GetOfst()
+ : 0;
+ const xub_StrLen nTxtFrmTextEndPos = rTxtFrm.HasFollow()
+ ? rTxtFrm.GetFollow()->GetOfst()
+ : rTxtFrm.GetTxt().Len();
+
+ // iteration over the redlines which overlap with the text node.
+ const SwRedlineTbl& rRedlineTbl = pIDocChangeTrack->GetRedlineTbl();
+ const USHORT nRedlineCount( rRedlineTbl.Count() );
+ for ( sal_uInt16 nActRedline = nIdxOfFirstRedlineForTxtNode;
+ nActRedline < nRedlineCount;
+ ++nActRedline)
+ {
+ const SwRedline* pActRedline = rRedlineTbl[ nActRedline ];
+ if ( pActRedline->Start()->nNode > rTxtNode.GetIndex() )
+ {
+ break;
+ }
+
+ xub_StrLen nTxtNodeChangeTrackStart( STRING_LEN );
+ xub_StrLen nTxtNodeChangeTrackEnd( STRING_LEN );
+ pActRedline->CalcStartEnd( rTxtNode.GetIndex(),
+ nTxtNodeChangeTrackStart,
+ nTxtNodeChangeTrackEnd );
+ if ( nTxtNodeChangeTrackStart > nTxtFrmTextEndPos ||
+ nTxtNodeChangeTrackEnd < nTxtFrmTextStartPos )
+ {
+ // Consider only redlines which overlap with the text frame's text.
+ continue;
+ }
+
+ SwWrongList* pMarkupList( 0 );
+ switch ( pActRedline->GetType() )
+ {
+ case nsRedlineType_t::REDLINE_INSERT:
+ {
+ pMarkupList = opChangeTrackInsertionTextMarkupList;
+ }
+ break;
+ case nsRedlineType_t::REDLINE_DELETE:
+ {
+ pMarkupList = opChangeTrackDeletionTextMarkupList;
+ }
+ break;
+ case nsRedlineType_t::REDLINE_FORMAT:
+ {
+ pMarkupList = opChangeTrackFormatChangeTextMarkupList;
+ }
+ break;
+ default:
+ {
+ // other types are not considered
+ }
+ }
+ if ( pMarkupList )
+ {
+ const xub_StrLen nTxtFrmChangeTrackStart =
+ nTxtNodeChangeTrackStart <= nTxtFrmTextStartPos
+ ? nTxtFrmTextStartPos
+ : nTxtNodeChangeTrackStart;
+
+ const xub_StrLen nTxtFrmChangeTrackEnd =
+ nTxtNodeChangeTrackEnd >= nTxtFrmTextEndPos
+ ? nTxtFrmTextEndPos
+ : nTxtNodeChangeTrackEnd;
+
+ pMarkupList->Insert( rtl::OUString(), 0,
+ nTxtFrmChangeTrackStart,
+ nTxtFrmChangeTrackEnd - nTxtFrmChangeTrackStart,
+ pMarkupList->Count() );
+ }
+ } // eof iteration over the redlines which overlap with the text node
+ }
+} // eof anonymous namespace
+
+SwParaChangeTrackingInfo::SwParaChangeTrackingInfo( const SwTxtFrm& rTxtFrm )
+ : mrTxtFrm( rTxtFrm )
+ , mpChangeTrackInsertionTextMarkupList( 0 )
+ , mpChangeTrackDeletionTextMarkupList( 0 )
+ , mpChangeTrackFormatChangeTextMarkupList( 0 )
+{
+}
+
+
+SwParaChangeTrackingInfo::~SwParaChangeTrackingInfo()
+{
+ reset();
+}
+
+void SwParaChangeTrackingInfo::reset()
+{
+ delete mpChangeTrackInsertionTextMarkupList;
+ mpChangeTrackInsertionTextMarkupList = 0;
+
+ delete mpChangeTrackDeletionTextMarkupList;
+ mpChangeTrackDeletionTextMarkupList = 0;
+
+ delete mpChangeTrackFormatChangeTextMarkupList;
+ mpChangeTrackFormatChangeTextMarkupList = 0;
+}
+
+const SwWrongList* SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList( const sal_Int32 nTextMarkupType )
+{
+ SwWrongList* pChangeTrackingTextMarkupList = 0;
+
+ if ( mpChangeTrackInsertionTextMarkupList == 0 )
+ {
+ ASSERT( mpChangeTrackDeletionTextMarkupList == 0,
+ "<SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList(..) - <mpChangeTrackDeletionTextMarkupList> expected to be NULL." );
+ ASSERT( mpChangeTrackFormatChangeTextMarkupList == 0,
+ "<SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList(..) - <mpChangeTrackFormatChangeTextMarkupList> expected to be NULL." );
+ initChangeTrackTextMarkupLists( mrTxtFrm,
+ mpChangeTrackInsertionTextMarkupList,
+ mpChangeTrackDeletionTextMarkupList,
+ mpChangeTrackFormatChangeTextMarkupList );
+ }
+
+ switch ( nTextMarkupType )
+ {
+ case css::text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ {
+ pChangeTrackingTextMarkupList = mpChangeTrackInsertionTextMarkupList;
+ }
+ break;
+ case css::text::TextMarkupType::TRACK_CHANGE_DELETION:
+ {
+ pChangeTrackingTextMarkupList = mpChangeTrackDeletionTextMarkupList;
+ }
+ break;
+ case css::text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pChangeTrackingTextMarkupList = mpChangeTrackFormatChangeTextMarkupList;
+ }
+ break;
+ default:
+ {
+ ASSERT( false,
+ "<SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList(..)> - misusage - unexpected text markup type for change tracking." );
+ }
+ }
+
+ return pChangeTrackingTextMarkupList;
+}
diff --git a/sw/source/core/access/parachangetrackinginfo.hxx b/sw/source/core/access/parachangetrackinginfo.hxx
new file mode 100644
index 000000000000..91131f37b757
--- /dev/null
+++ b/sw/source/core/access/parachangetrackinginfo.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _PARACHANGETRACKINGINFO_HXX_
+#define _PARACHANGETRACKINGINFO_HXX_
+
+#include <sal/types.h>
+
+class SwTxtFrm;
+class SwWrongList;
+
+class SwParaChangeTrackingInfo
+{
+ public:
+ explicit SwParaChangeTrackingInfo( const SwTxtFrm& rTxtFrm );
+ ~SwParaChangeTrackingInfo();
+
+ void reset();
+
+ const SwWrongList* getChangeTrackingTextMarkupList( const sal_Int32 nTextMarkupType );
+
+ private:
+ SwParaChangeTrackingInfo( const SwParaChangeTrackingInfo& );
+ SwParaChangeTrackingInfo& operator=( const SwParaChangeTrackingInfo& );
+
+ const SwTxtFrm& mrTxtFrm;
+
+ SwWrongList* mpChangeTrackInsertionTextMarkupList;
+ SwWrongList* mpChangeTrackDeletionTextMarkupList;
+ SwWrongList* mpChangeTrackFormatChangeTextMarkupList;
+};
+#endif
+
diff --git a/sw/source/core/access/textmarkuphelper.cxx b/sw/source/core/access/textmarkuphelper.cxx
index 0d92791ab29f..408a22ebd8ba 100644
--- a/sw/source/core/access/textmarkuphelper.cxx
+++ b/sw/source/core/access/textmarkuphelper.cxx
@@ -34,7 +34,7 @@
#include <algorithm>
#include <comphelper/stlunosequence.hxx>
-#include "errhdl.hxx"
+#include <errhdl.hxx>
#include <com/sun/star/text/TextMarkupType.hpp>
#include <com/sun/star/accessibility/TextSegment.hpp>
@@ -81,22 +81,39 @@ namespace {
}
}
-// implementation of calss <SwTextMarkupoHelper>
-SwTextMarkupHelper::SwTextMarkupHelper( const SwTxtNode& rTxtNode,
- const SwAccessiblePortionData& rPortionData )
- : mrTxtNode( rTxtNode ),
- mrPortionData( rPortionData )
+// implementation of class <SwTextMarkupoHelper>
+SwTextMarkupHelper::SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwTxtNode& rTxtNode )
+ : mrPortionData( rPortionData )
+ // --> OD 2010-02-19 #i108125#
+ , mpTxtNode( &rTxtNode )
+ , mpTextMarkupList( 0 )
+ // <--
{
}
-sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
+// --> OD 2010-02-19 #i108125#
+SwTextMarkupHelper::SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwWrongList& rTextMarkupList )
+ : mrPortionData( rPortionData )
+ , mpTxtNode( 0 )
+ , mpTextMarkupList( &rTextMarkupList )
+{
+}
+// <--
+
+sal_Int32 SwTextMarkupHelper::getTextMarkupCount( const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException)
{
sal_Int32 nTextMarkupCount( 0 );
+ // --> OD 2010-02-19 #i108125#
const SwWrongList* pTextMarkupList =
- getTextMarkupList( mrTxtNode, nTextMarkupType );
+ mpTextMarkupList
+ ? mpTextMarkupList
+ : getTextMarkupList( *mpTxtNode, nTextMarkupType );
+ // <--
if ( pTextMarkupList )
{
nTextMarkupCount = pTextMarkupList->Count();
@@ -105,8 +122,8 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
return nTextMarkupCount;
}
::com::sun::star::accessibility::TextSegment
- SwTextMarkupHelper::getTextMarkup( sal_Int32 nTextMarkupIndex,
- sal_Int32 nTextMarkupType )
+ SwTextMarkupHelper::getTextMarkup( const sal_Int32 nTextMarkupIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException)
@@ -121,8 +138,12 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
aTextMarkupSegment.SegmentStart = -1;
aTextMarkupSegment.SegmentEnd = -1;
+ // --> OD 2010-02-19 #i108125#
const SwWrongList* pTextMarkupList =
- getTextMarkupList( mrTxtNode, nTextMarkupType );
+ mpTextMarkupList
+ ? mpTextMarkupList
+ : getTextMarkupList( *mpTxtNode, nTextMarkupType );
+ // <--
if ( pTextMarkupList )
{
const SwWrongArea* pTextMarkup =
@@ -149,8 +170,8 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
}
::com::sun::star::uno::Sequence< ::com::sun::star::accessibility::TextSegment >
- SwTextMarkupHelper::getTextMarkupAtIndex( sal_Int32 nCharIndex,
- sal_Int32 nTextMarkupType )
+ SwTextMarkupHelper::getTextMarkupAtIndex( const sal_Int32 nCharIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException)
@@ -166,9 +187,13 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
return uno::Sequence< ::com::sun::star::accessibility::TextSegment >();
}
- ::std::vector< ::com::sun::star::accessibility::TextSegment > aTmpTextMarkups;
+ // --> OD 2010-02-19 #i108125#
const SwWrongList* pTextMarkupList =
- getTextMarkupList( mrTxtNode, nTextMarkupType );
+ mpTextMarkupList
+ ? mpTextMarkupList
+ : getTextMarkupList( *mpTxtNode, nTextMarkupType );
+ // <--
+ ::std::vector< ::com::sun::star::accessibility::TextSegment > aTmpTextMarkups;
if ( pTextMarkupList )
{
const ::rtl::OUString rText = mrPortionData.GetAccessibleString();
diff --git a/sw/source/core/access/textmarkuphelper.hxx b/sw/source/core/access/textmarkuphelper.hxx
index 64fbfec394d7..9b2bb519a2a1 100644
--- a/sw/source/core/access/textmarkuphelper.hxx
+++ b/sw/source/core/access/textmarkuphelper.hxx
@@ -37,30 +37,37 @@ namespace com { namespace sun { namespace star { namespace accessibility {
struct TextSegment;
} } } }
-class SwTxtNode;
class SwAccessiblePortionData;
+class SwTxtNode;
+// --> OD 2010-02-19 #i108125#
+class SwWrongList;
+// <--
class SwTextMarkupHelper
{
public:
- SwTextMarkupHelper( const SwTxtNode& rTxtNode,
- const SwAccessiblePortionData& rPortionData );
+ SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwTxtNode& rTxtNode );
+ // --> OD 2010-02-19 #i108125#
+ SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwWrongList& rTextMarkupList );
+ // <--
~SwTextMarkupHelper() {}
- sal_Int32 getTextMarkupCount( sal_Int32 nTextMarkupType )
+ sal_Int32 getTextMarkupCount( const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
::com::sun::star::accessibility::TextSegment getTextMarkup(
- sal_Int32 nTextMarkupIndex,
- sal_Int32 nTextMarkupType )
+ const sal_Int32 nTextMarkupIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
::com::sun::star::uno::Sequence< ::com::sun::star::accessibility::TextSegment >
- getTextMarkupAtIndex( sal_Int32 nCharIndex,
- sal_Int32 nTextMarkupType )
+ getTextMarkupAtIndex( const sal_Int32 nCharIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
@@ -69,8 +76,12 @@ class SwTextMarkupHelper
SwTextMarkupHelper( const SwTextMarkupHelper& );
SwTextMarkupHelper& operator=( const SwTextMarkupHelper& );
- const SwTxtNode& mrTxtNode;
const SwAccessiblePortionData& mrPortionData;
+
+ // --> OD 2010-02-19 #i108125#
+ const SwTxtNode* mpTxtNode;
+ const SwWrongList* mpTextMarkupList;
+ // <--
};
#endif
diff --git a/sw/source/core/bastyp/index.cxx b/sw/source/core/bastyp/index.cxx
index 92cd9f5833cf..2c1b6e2bbb65 100644
--- a/sw/source/core/bastyp/index.cxx
+++ b/sw/source/core/bastyp/index.cxx
@@ -84,7 +84,7 @@ void SwIndexReg::ChkArr()
-SwIndex::SwIndex( SwIndexReg* pArr, xub_StrLen nIdx )
+SwIndex::SwIndex(SwIndexReg *const pArr, xub_StrLen const nIdx)
: nIndex( nIdx ), pArray( pArr ), pNext( 0 ), pPrev( 0 )
{
if( !pArray )
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 9ea80b899a6d..249500b95f98 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -710,8 +710,9 @@ BOOL SwCrsrShell::MoveFldType( const SwFieldType* pFldType, BOOL bNext,
SwTxtNode* pTNd = rPos.nNode.GetNode().GetTxtNode();
ASSERT( pTNd, "Wo ist mein CntntNode?" );
- SwTxtFld* pTxtFld = (SwTxtFld*)pTNd->GetTxtAttr( rPos.nContent,
- RES_TXTATR_FIELD );
+ SwTxtFld * pTxtFld = static_cast<SwTxtFld *>(
+ pTNd->GetTxtAttrForCharAt(rPos.nContent.GetIndex(),
+ RES_TXTATR_FIELD));
BOOL bDelFld = 0 == pTxtFld;
if( bDelFld )
{
@@ -1242,13 +1243,27 @@ BOOL SwCrsrShell::GetContentAtPos( const Point& rPt,
{
pTxtAttr = 0;
if( SwContentAtPos::SW_TOXMARK & rCntntAtPos.eCntntAtPos )
- pTxtAttr = pTxtNd->GetTxtAttr( aPos.nContent,
- RES_TXTATR_TOXMARK );
+ {
+ ::std::vector<SwTxtAttr *> const marks(
+ pTxtNd->GetTxtAttrsAt(
+ aPos.nContent.GetIndex(), RES_TXTATR_TOXMARK));
+ if (marks.size())
+ { // hmm... can only return 1 here
+ pTxtAttr = *marks.begin();
+ }
+ }
if( !pTxtAttr &&
SwContentAtPos::SW_REFMARK & rCntntAtPos.eCntntAtPos )
- pTxtAttr = pTxtNd->GetTxtAttr( aPos.nContent,
- RES_TXTATR_REFMARK );
+ {
+ ::std::vector<SwTxtAttr *> const marks(
+ pTxtNd->GetTxtAttrsAt(
+ aPos.nContent.GetIndex(), RES_TXTATR_REFMARK));
+ if (marks.size())
+ { // hmm... can only return 1 here
+ pTxtAttr = *marks.begin();
+ }
+ }
if( pTxtAttr )
{
@@ -1293,8 +1308,8 @@ BOOL SwCrsrShell::GetContentAtPos( const Point& rPt,
if( !bRet && SwContentAtPos::SW_INETATTR & rCntntAtPos.eCntntAtPos
&& !aTmpState.bFtnNoInfo )
{
- pTxtAttr = pTxtNd->GetTxtAttr( aPos.nContent,
- RES_TXTATR_INETFMT );
+ pTxtAttr = pTxtNd->GetTxtAttrAt(
+ aPos.nContent.GetIndex(), RES_TXTATR_INETFMT);
// nur INetAttrs mit URLs "erkennen"
if( pTxtAttr && pTxtAttr->GetINetFmt().GetValue().Len() )
{
@@ -1629,8 +1644,11 @@ BOOL SwCrsrShell::SelectTxtAttr( USHORT nWhich, BOOL bExpand,
if( !pTxtAttr )
{
SwTxtNode* pTxtNd = rPos.nNode.GetNode().GetTxtNode();
- pTxtAttr = pTxtNd ? pTxtNd->GetTxtAttr( rPos.nContent,
- nWhich, bExpand ) : 0;
+ pTxtAttr = (pTxtNd)
+ ? pTxtNd->GetTxtAttrAt(rPos.nContent.GetIndex(),
+ static_cast<RES_TXTATR>(nWhich),
+ (bExpand) ? SwTxtNode::EXPAND : SwTxtNode::DEFAULT)
+ : 0;
}
if( pTxtAttr )
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx
index bb458ad49643..aeaeeeb300bc 100644
--- a/sw/source/core/crsr/findtxt.cxx
+++ b/sw/source/core/crsr/findtxt.cxx
@@ -48,7 +48,6 @@
#include <swundo.hxx>
#include <breakit.hxx>
-/*testarea*/
#include <docsh.hxx>
#include <PostItMgr.hxx>
#include <viewsh.hxx>
@@ -334,7 +333,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te
xub_StrLen aStart = 0;
// do we need to finish a note?
- if (POSTITMGR->GetActivePostIt())
+ if (POSTITMGR->HasActiveSidebarWin())
{
if (bSearchInNotes)
{
@@ -354,7 +353,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te
}
else
{
- POSTITMGR->SetActivePostIt(0);
+ POSTITMGR->SetActiveSidebarWin(0);
}
}
diff --git a/sw/source/core/crsr/trvlfnfl.cxx b/sw/source/core/crsr/trvlfnfl.cxx
index af7360d64b40..3edf3718eabe 100644
--- a/sw/source/core/crsr/trvlfnfl.cxx
+++ b/sw/source/core/crsr/trvlfnfl.cxx
@@ -62,11 +62,13 @@ BOOL SwCursor::GotoFtnTxt()
{
// springe aus dem Content zur Fussnote
BOOL bRet = FALSE;
- SwTxtAttr *pFtn;
SwTxtNode* pTxtNd = GetPoint()->nNode.GetNode().GetTxtNode();
- if( pTxtNd && 0 != (
- pFtn = pTxtNd->GetTxtAttr( GetPoint()->nContent, RES_TXTATR_FTN ) ))
+ SwTxtAttr *const pFtn( (pTxtNd)
+ ? pTxtNd->GetTxtAttrForCharAt(
+ GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN)
+ : 0);
+ if (pFtn)
{
SwCrsrSaveState aSaveState( *this );
GetPoint()->nNode = *((SwTxtFtn*)pFtn)->GetStartNode();
diff --git a/sw/source/core/crsr/trvlreg.cxx b/sw/source/core/crsr/trvlreg.cxx
index e9cf58df2dc4..bf6343e77bc0 100644
--- a/sw/source/core/crsr/trvlreg.cxx
+++ b/sw/source/core/crsr/trvlreg.cxx
@@ -262,7 +262,7 @@ BOOL SwCursor::GotoRegion( const String& rName )
const SwNodeIndex* pIdx;
const SwSection* pSect;
if( 0 != ( pSect = pFmt->GetSection() ) &&
- pSect->GetName() == rName &&
+ pSect->GetSectionName() == rName &&
0 != ( pIdx = pFmt->GetCntnt().GetCntntIdx() ) &&
pIdx->GetNode().GetNodes().IsDocNodes() )
{
diff --git a/sw/source/core/doc/dbgoutsw.cxx b/sw/source/core/doc/dbgoutsw.cxx
index e675e900e0f8..3c85091c7d20 100644
--- a/sw/source/core/doc/dbgoutsw.cxx
+++ b/sw/source/core/doc/dbgoutsw.cxx
@@ -52,6 +52,7 @@
#include <dbgoutsw.hxx>
#include <SwRewriter.hxx>
#include <iostream>
+#include <cstdio>
using namespace std;
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index da366da4b6fa..7f2b92979f57 100755
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -2323,11 +2323,10 @@ BOOL SwDoc::RemoveInvisibleContent()
}
if( pSect->GetCondition().Len() )
{
- SwSection aSect( pSect->GetType(), pSect->GetName() );
- aSect = *pSect;
- aSect.SetCondition( aEmptyStr );
- aSect.SetHidden( FALSE );
- ChgSection( n, aSect );
+ SwSectionData aSectionData( *pSect );
+ aSectionData.SetCondition( aEmptyStr );
+ aSectionData.SetHidden( false );
+ UpdateSection( n, aSectionData );
}
}
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index 1e058867ba32..0080694722ba 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -1023,9 +1023,8 @@ SaveBookmark::SaveBookmark(
m_aShortName = pBookmark->GetShortName();
m_aCode = pBookmark->GetKeyCode();
- ::sfx2::Metadatable * const pMetadatable(
- const_cast< ::sfx2::Metadatable * >( // CreateUndo should be const?
- dynamic_cast< ::sfx2::Metadatable const* >(pBookmark)));
+ ::sfx2::Metadatable const*const pMetadatable(
+ dynamic_cast< ::sfx2::Metadatable const* >(pBookmark));
if (pMetadatable)
{
m_pMetadataUndo = pMetadatable->CreateUndo();
diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx
index 6451aebd4251..a19ece4daf66 100644
--- a/sw/source/core/doc/doccomp.cxx
+++ b/sw/source/core/doc/doccomp.cxx
@@ -1412,7 +1412,7 @@ void SwCompareData::ShowDelete( const CompareData& rData, ULONG nStt,
if( *pCorr->GetPoint() == *pTmp->GetPoint() )
{
SwNodeIndex aTmpPos( pTmp->GetMark()->nNode, -1 );
- *pCorr->GetPoint() = SwPosition( aTmpPos, 0 );
+ *pCorr->GetPoint() = SwPosition( aTmpPos );
}
}
}
diff --git a/sw/source/core/doc/docdde.cxx b/sw/source/core/doc/docdde.cxx
index 5bf14845cbf3..d21e6313a2df 100644
--- a/sw/source/core/doc/docdde.cxx
+++ b/sw/source/core/doc/docdde.cxx
@@ -99,7 +99,9 @@ BOOL lcl_FindSection( const SwSectionFmtPtr& rpSectFmt, void* pArgs, bool bCaseS
SwSection* pSect = rpSectFmt->GetSection();
if( pSect )
{
- String sNm( bCaseSensitive ? pSect->GetName() : GetAppCharClass().lower( pSect->GetName() ));
+ String sNm( (bCaseSensitive)
+ ? pSect->GetSectionName()
+ : GetAppCharClass().lower( pSect->GetSectionName() ));
String sCompare( (bCaseSensitive)
? pItem->m_Item
: GetAppCharClass().lower( pItem->m_Item ) );
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index af1236b6371c..d971ac0c51fe 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -397,10 +397,9 @@ void SwDoc::ResetAttrs( const SwPaM &rRg,
// JP 22.08.96: Sonderfall: steht der Crsr in einem URL-Attribut
// dann wird dessen Bereich genommen
- const SwTxtAttr* pURLAttr;
- if( pTxtNd->HasHints() &&
- 0 != ( pURLAttr = pTxtNd->GetTxtAttr( rSt, RES_TXTATR_INETFMT ))
- && pURLAttr->GetINetFmt().GetValue().Len() )
+ SwTxtAttr const*const pURLAttr(
+ pTxtNd->GetTxtAttrAt(rSt.GetIndex(), RES_TXTATR_INETFMT));
+ if (pURLAttr && pURLAttr->GetINetFmt().GetValue().Len())
{
nMkPos = *pURLAttr->GetStart();
nPtPos = *pURLAttr->GetEnd();
@@ -902,10 +901,9 @@ lcl_InsAttr(SwDoc *const pDoc, const SwPaM &rRg, const SfxItemSet& rChgSet,
// JP 22.08.96: Sonderfall: steht der Crsr in einem URL-Attribut
// dann wird dessen Bereich genommen
- const SwTxtAttr* pURLAttr;
- if( pTxtNd->HasHints() &&
- 0 != ( pURLAttr = pTxtNd->GetTxtAttr( rSt, RES_TXTATR_INETFMT ))
- && pURLAttr->GetINetFmt().GetValue().Len() )
+ SwTxtAttr const*const pURLAttr(
+ pTxtNd->GetTxtAttrAt(rSt.GetIndex(), RES_TXTATR_INETFMT));
+ if (pURLAttr && pURLAttr->GetINetFmt().GetValue().Len())
{
nMkPos = *pURLAttr->GetStart();
nPtPos = *pURLAttr->GetEnd();
diff --git a/sw/source/core/doc/docglbl.cxx b/sw/source/core/doc/docglbl.cxx
index abf2e5b2217b..30a385442fc0 100644
--- a/sw/source/core/doc/docglbl.cxx
+++ b/sw/source/core/doc/docglbl.cxx
@@ -400,11 +400,11 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath,
default:
{
String sNm( INetURLObject( sFileName ).GetName() );
- SwSection aSect( FILE_LINK_SECTION,
+ SwSectionData aSectData( FILE_LINK_SECTION,
GetUniqueSectionName( &sNm ));
SwSectionFmt* pFmt = MakeSectionFmt( 0 );
- aSect.SetLinkFileName(sFileName );
- aSect.SetProtect();
+ aSectData.SetLinkFileName(sFileName);
+ aSectData.SetProtectFlag(true);
aEndIdx--; // im InsertSection ist Ende inclusive
while( aEndIdx.GetNode().IsStartNode() )
@@ -456,11 +456,15 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath,
SwNodeIndex aStartIdx(*pSttNd);
if (aEndIdx >= aStartIdx)
- pSectNd = GetNodes().InsertSection
- (aStartIdx, *pFmt, aSect, &aEndIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aStartIdx,
+ *pFmt, aSectData, 0, &aEndIdx, false);
+ }
else
- pSectNd = GetNodes().InsertSection
- (aEndIdx, *pFmt, aSect, &aStartIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aEndIdx,
+ *pFmt, aSectData, 0, &aStartIdx, false);
+ }
// <- #i26762#
pSectNd->GetSection().CreateLink( CREATE_CONNECT );
@@ -747,11 +751,11 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, int nOutlineLevel )
default:
{
String sNm( INetURLObject( sFileName ).GetName() );
- SwSection aSect( FILE_LINK_SECTION,
+ SwSectionData aSectData( FILE_LINK_SECTION,
GetUniqueSectionName( &sNm ));
SwSectionFmt* pFmt = MakeSectionFmt( 0 );
- aSect.SetLinkFileName(sFileName );
- aSect.SetProtect();
+ aSectData.SetLinkFileName(sFileName);
+ aSectData.SetProtectFlag(true);
aEndIdx--; // im InsertSection ist Ende inclusive
while( aEndIdx.GetNode().IsStartNode() )
@@ -799,11 +803,15 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, int nOutlineLevel )
SwNodeIndex aStartIdx(*pSttNd);
if (aEndIdx >= aStartIdx)
- pSectNd = GetNodes().InsertSection
- (aStartIdx, *pFmt, aSect, &aEndIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aStartIdx,
+ *pFmt, aSectData, 0, &aEndIdx, false);
+ }
else
- pSectNd = GetNodes().InsertSection
- (aEndIdx, *pFmt, aSect, &aStartIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aEndIdx,
+ *pFmt, aSectData, 0, &aStartIdx, false);
+ }
pSectNd->GetSection().CreateLink( CREATE_CONNECT );
}
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index 6e04d49afb3e..ceb7d6e3463c 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -947,8 +947,6 @@ SwDrawFrmFmt* SwDoc::Insert( const SwPaM &rRg,
// Anker noch nicht gesetzt ?
// DrawObjecte duerfen niemals in Kopf-/Fusszeilen landen.
const bool bIsAtCntnt = (FLY_AT_PAGE != eAnchorId);
-// FLY_AT_CNTNT == eAnchorId || FLY_IN_CNTNT == eAnchorId ||
-// FLY_AT_FLY == eAnchorId || FLY_AUTO_CNTNT == eAnchorId;
const SwNodeIndex* pChkIdx = 0;
if( !pAnchor )
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 8dfcbb215e3a..fe4044dd58ac 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -1407,8 +1407,8 @@ void SwDoc::Paste( const SwDoc& rSource )
{
aIndexBefore++;
- SwPaM aPaM(SwPosition(aIndexBefore, 0),
- SwPosition(rInsPos.nNode, 0));
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
MakeUniqueNumRules(aPaM);
}
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 3b36416ecb64..58b3e084cf7a 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -366,26 +366,23 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( const SwPosition& rPos,
{
StartUndo( UNDO_INSTOX, NULL );
- SwTOXBaseSection* pNew = new SwTOXBaseSection( rTOX );
String sSectNm( rTOX.GetTOXName() );
sSectNm = GetUniqueTOXBaseName( *rTOX.GetTOXType(), &sSectNm );
- pNew->SetTOXName(sSectNm);
- pNew->SwSection::SetName(sSectNm);
SwPaM aPam( rPos );
- SwSection* pSect = InsertSwSection( aPam, *pNew, pSet, false );
- if( pSect )
+ SwSectionData aSectionData( TOX_CONTENT_SECTION, sSectNm );
+ SwTOXBaseSection *const pNewSection = dynamic_cast<SwTOXBaseSection *>(
+ InsertSwSection( aPam, aSectionData, & rTOX, pSet, false ));
+ if (pNewSection)
{
- SwSectionNode* pSectNd = pSect->GetFmt()->GetSectionNode();
- SwSection* pCl = pNew;
- pSect->GetFmt()->Add( pCl );
- pSectNd->SetNewSection( pNew );
+ SwSectionNode *const pSectNd = pNewSection->GetFmt()->GetSectionNode();
+ pNewSection->SetTOXName(sSectNm); // rTOX may have had no name...
if( bExpand )
{
// OD 19.03.2003 #106329# - add value for 2nd parameter = true to
// indicate, that a creation of a new table of content has to be performed.
// Value of 1st parameter = default value.
- pNew->Update( 0, true );
+ pNewSection->Update( 0, true );
}
else if( 1 == rTOX.GetTitle().Len() && IsInReading() )
// insert title of TOX
@@ -396,24 +393,22 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( const SwPosition& rPos,
SwTxtNode* pHeadNd = GetNodes().MakeTxtNode( aIdx,
GetTxtCollFromPool( RES_POOLCOLL_STANDARD ) );
- String sNm( pNew->GetTOXName() );
+ String sNm( pNewSection->GetTOXName() );
// ??Resource
sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "_Head" ));
- SwSection aSect( TOX_HEADER_SECTION, sNm );
+ SwSectionData headerData( TOX_HEADER_SECTION, sNm );
SwNodeIndex aStt( *pHeadNd ); aIdx--;
SwSectionFmt* pSectFmt = MakeSectionFmt( 0 );
- GetNodes().InsertSection( aStt, *pSectFmt, aSect, &aIdx,
- TRUE, FALSE );
+ GetNodes().InsertTextSection(
+ aStt, *pSectFmt, headerData, 0, &aIdx, true, false);
}
}
- else
- delete pNew, pNew = 0;
EndUndo( UNDO_INSTOX, NULL );
- return pNew;
+ return pNewSection;
}
@@ -433,13 +428,10 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( ULONG nSttNd, ULONG nEndNd,
pSectNd = pSectNd->StartOfSectionNode()->FindSectionNode();
}
- // create SectionNode around the Nodes
- SwTOXBaseSection* pNew = new SwTOXBaseSection( rTOX );
-
String sSectNm( rTOX.GetTOXName() );
sSectNm = GetUniqueTOXBaseName(*rTOX.GetTOXType(), &sSectNm);
- pNew->SetTOXName(sSectNm);
- pNew->SwSection::SetName(sSectNm);
+
+ SwSectionData aSectionData( TOX_CONTENT_SECTION, sSectNm );
SwNodeIndex aStt( GetNodes(), nSttNd ), aEnd( GetNodes(), nEndNd );
SwSectionFmt* pFmt = MakeSectionFmt( 0 );
@@ -448,20 +440,18 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( ULONG nSttNd, ULONG nEndNd,
// --aEnd; // im InsertSection ist Ende inclusive
- pSectNd = GetNodes().InsertSection( aStt, *pFmt, *pNew, &aEnd );
- if( pSectNd )
+ SwSectionNode *const pNewSectionNode =
+ GetNodes().InsertTextSection(aStt, *pFmt, aSectionData, &rTOX, &aEnd);
+ if (!pNewSectionNode)
{
- SwSection* pCl = pNew;
- pFmt->Add( pCl );
- pSectNd->SetNewSection( pNew );
- }
- else
- {
- delete pNew, pNew = 0;
DelSectionFmt( pFmt );
+ return 0;
}
- return pNew;
+ SwTOXBaseSection *const pNewSection(
+ dynamic_cast<SwTOXBaseSection*>(& pNewSectionNode->GetSection()));
+ pNewSection->SetTOXName(sSectNm); // rTOX may have had no name...
+ return pNewSection;
}
/*--------------------------------------------------------------------
@@ -578,7 +568,7 @@ BOOL SwDoc::DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes )
aSearchPam will contain the point where to move the cursors
to. */
SwPaM aSearchPam(*pMyNode->EndOfSectionNode());
- SwPosition aEndPos(*pStartNd->EndOfSectionNode(), 0);
+ SwPosition aEndPos(*pStartNd->EndOfSectionNode());
if (! aSearchPam.Move() /* no content node found */
|| *aSearchPam.GetPoint() >= aEndPos /* content node found
outside surrounding */
@@ -588,7 +578,7 @@ BOOL SwDoc::DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes )
content node */
SwPaM aTmpPam(*pMyNode);
aSearchPam = aTmpPam;
- SwPosition aStartPos(*pStartNd, 0);
+ SwPosition aStartPos(*pStartNd);
if ( ! aSearchPam.Move(fnMoveBackward) /* no content node found */
|| *aSearchPam.GetPoint() <= aStartPos /* content node
@@ -599,7 +589,7 @@ BOOL SwDoc::DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes )
/* There is no content node in the surrounding of
TOX'. Append text node behind TOX' section. */
- SwPosition aInsPos(*pMyNode->EndOfSectionNode(), 0);
+ SwPosition aInsPos(*pMyNode->EndOfSectionNode());
AppendTxtNode(aInsPos);
SwPaM aTmpPam1(aInsPos);
@@ -697,7 +687,7 @@ String SwDoc::GetUniqueTOXBaseName( const SwTOXType& rType,
if( 0 != ( pSectNd = (*pSectionFmtTbl)[ n ]->GetSectionNode( FALSE ) )&&
TOX_CONTENT_SECTION == (pSect = &pSectNd->GetSection())->GetType())
{
- const String& rNm = pSect->GetName();
+ const String& rNm = pSect->GetSectionName();
if( rNm.Match( aName ) == nNmLen )
{
// Nummer bestimmen und das Flag setzen
@@ -743,7 +733,7 @@ BOOL SwDoc::SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName)
if(bRet)
{
pTOX->SetTOXName(rName);
- pTOX->SwTOXBaseSection::SetName(rName);
+ pTOX->SetSectionName(rName);
SetModified();
}
return bRet;
@@ -776,11 +766,12 @@ const SwTxtNode* lcl_FindChapterNode( const SwNode& rNd, BYTE nLvl = 0 )
Beschreibung: Verzeichnis-Klasse
--------------------------------------------------------------------*/
-SwTOXBaseSection::SwTOXBaseSection( const SwTOXBase& rBase )
- : SwTOXBase( rBase ), SwSection( TOX_CONTENT_SECTION, aEmptyStr )
+SwTOXBaseSection::SwTOXBaseSection(SwTOXBase const& rBase, SwSectionFmt & rFmt)
+ : SwTOXBase( rBase )
+ , SwSection( TOX_CONTENT_SECTION, aEmptyStr, rFmt )
{
SetProtect( rBase.IsProtected() );
- SwSection::SetName( GetTOXName() );
+ SetSectionName( GetTOXName() );
}
@@ -962,12 +953,12 @@ void SwTOXBaseSection::Update(const SfxItemSet* pAttr,
// ??Resource
sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "_Head" ));
- SwSection aSect( TOX_HEADER_SECTION, sNm );
+ SwSectionData headerData( TOX_HEADER_SECTION, sNm );
SwNodeIndex aStt( *pHeadNd ); aIdx--;
SwSectionFmt* pSectFmt = pDoc->MakeSectionFmt( 0 );
- pDoc->GetNodes().InsertSection( aStt, *pSectFmt, aSect, &aIdx,
- TRUE, FALSE );
+ pDoc->GetNodes().InsertTextSection(
+ aStt, *pSectFmt, headerData, 0, &aIdx, true, false);
}
// jetzt waere ein prima Zeitpunkt, um die Numerierung zu updaten
diff --git a/sw/source/core/docnode/ndsect.cxx b/sw/source/core/docnode/ndsect.cxx
index acb0d6acd274..306560272c6f 100644
--- a/sw/source/core/docnode/ndsect.cxx
+++ b/sw/source/core/docnode/ndsect.cxx
@@ -137,7 +137,7 @@ bool lcl_IsInSameTblBox( SwNodes& _rNds,
return true;
}
-void lcl_CheckEmptyLayFrm( SwNodes& rNds, SwSection& rSect,
+void lcl_CheckEmptyLayFrm( SwNodes& rNds, SwSectionData& rSectionData,
const SwNode& rStt, const SwNode& rEnd )
{
SwNodeIndex aIdx( rStt );
@@ -151,12 +151,16 @@ void lcl_CheckEmptyLayFrm( SwNodes& rNds, SwSection& rSect,
!CheckNodesRange( rEnd, aIdx, TRUE ) ||
// OD 04.11.2003 #i21457#
!lcl_IsInSameTblBox( rNds, rEnd, false ))
- rSect.SetHidden( FALSE );
+ {
+ rSectionData.SetHidden( false );
+ }
}
}
-SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
- const SfxItemSet* pAttr, bool bUpdate )
+SwSection *
+SwDoc::InsertSwSection(SwPaM const& rRange, SwSectionData & rNewData,
+ SwTOXBase const*const pTOXBase,
+ SfxItemSet const*const pAttr, bool const bUpdate)
{
const SwNode* pPrvNd = 0;
USHORT nRegionRet = 0;
@@ -169,14 +173,15 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
// Teste ob das gesamte Dokument versteckt werden soll,
// koennen wir zur Zeit nicht !!!!
- if( rNew.IsHidden() && rRange.HasMark() )
+ if (rNewData.IsHidden() && rRange.HasMark())
{
const SwPosition *pStt = rRange.Start(), *pEnd = rRange.End();
if( !pStt->nContent.GetIndex() &&
pEnd->nNode.GetNode().GetCntntNode()->Len() ==
pEnd->nContent.GetIndex() )
{
- ::lcl_CheckEmptyLayFrm( GetNodes(), const_cast<SwSection&>(rNew),
+ ::lcl_CheckEmptyLayFrm( GetNodes(),
+ rNewData,
pStt->nNode.GetNode(),
pEnd->nNode.GetNode() );
}
@@ -186,7 +191,7 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
if( DoesUndo() )
{
ClearRedo();
- pUndoInsSect = new SwUndoInsSection( rRange, rNew, pAttr );
+ pUndoInsSect = new SwUndoInsSection(rRange, rNewData, pAttr, pTOXBase);
AppendUndo( pUndoInsSect );
DoUndo( FALSE );
}
@@ -216,7 +221,8 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
aEnd++;
--aEnd; // im InsertSection ist Ende inclusive
- pNewSectNode = GetNodes().InsertSection( aStt, *pFmt, rNew, &aEnd );
+ pNewSectNode = GetNodes().InsertTextSection(
+ aStt, *pFmt, rNewData, pTOXBase, & aEnd);
}
else
{
@@ -287,8 +293,8 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
pEndPos->nContent.Assign( pTNd, nCntnt );
}
}
- pNewSectNode = GetNodes().InsertSection( pSttPos->nNode, *pFmt, rNew,
- &pEndPos->nNode );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pSttPos->nNode, *pFmt, rNewData, pTOXBase, &pEndPos->nNode);
}
}
else
@@ -297,11 +303,13 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
const SwCntntNode* pCNd = pPos->nNode.GetNode().GetCntntNode();
if( !pPos->nContent.GetIndex() )
{
- pNewSectNode = GetNodes().InsertSection( pPos->nNode, *pFmt, rNew, 0, TRUE );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pPos->nNode, *pFmt, rNewData, pTOXBase, 0, true);
}
else if( pPos->nContent.GetIndex() == pCNd->Len() )
{
- pNewSectNode = GetNodes().InsertSection( pPos->nNode, *pFmt, rNew, 0, FALSE );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pPos->nNode, *pFmt, rNewData, pTOXBase, 0, false);
}
else
{
@@ -310,7 +318,8 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
pUndoInsSect->SaveSplitNode( (SwTxtNode*)pCNd, TRUE );
}
SplitNode( *pPos, false );
- pNewSectNode = GetNodes().InsertSection( pPos->nNode, *pFmt, rNew, 0, TRUE );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pPos->nNode, *pFmt, rNewData, pTOXBase, 0, true);
}
}
@@ -334,7 +343,7 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
}
// ist eine Condition gesetzt
- if( rNew.IsHidden() && rNew.GetCondition().Len() )
+ if (rNewData.IsHidden() && rNewData.GetCondition().Len())
{
// dann berechne bis zu dieser Position
SwCalc aCalc( *this );
@@ -368,7 +377,7 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
DoUndo( TRUE );
}
- if( rNew.IsLinkType() )
+ if (rNewData.IsLinkType())
{
pNewSectNode->GetSection().CreateLink( bUpdate ? CREATE_UPDATE : CREATE_CONNECT );
}
@@ -549,7 +558,7 @@ void SwDoc::DelSectionFmt( SwSectionFmt *pFmt, BOOL bDelNodes )
EndUndo(UNDO_DELSECTION, NULL);
return ;
}
- AppendUndo( new SwUndoDelSection( *pFmt ) );
+ AppendUndo( MakeUndoDelSection( *pFmt ) );
}
else if( bDelNodes && pIdx && &GetNodes() == &pIdx->GetNodes() &&
0 != (pSectNd = pIdx->GetNode().GetSectionNode() ))
@@ -609,9 +618,8 @@ void SwDoc::DelSectionFmt( SwSectionFmt *pFmt, BOOL bDelNodes )
SetModified();
}
-void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
- const SfxItemSet* pAttr,
- sal_Bool bPreventLinkUpdate )
+void SwDoc::UpdateSection(sal_uInt16 const nPos, SwSectionData & rNewData,
+ SfxItemSet const*const pAttr, bool const bPreventLinkUpdate)
{
SwSectionFmt* pFmt = (*pSectionFmtTbl)[ nPos ];
SwSection* pSection = pFmt->GetSection();
@@ -619,7 +627,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
/// remember hidden condition flag of SwSection before changes
bool bOldCondHidden = pSection->IsCondHidden() ? true : false;
- if( *pSection == rSect )
+ if (pSection->DataEquals(rNewData))
{
// die Attribute ueberpruefen
BOOL bOnlyAttrChg = FALSE;
@@ -647,7 +655,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
if( DoesUndo() )
{
ClearRedo();
- AppendUndo( new SwUndoChgSection( *pFmt, TRUE ) );
+ AppendUndo( MakeUndoUpdateSection( *pFmt, true ) );
// --> FME 2004-10-13 #i32968#
// Inserting columns in the section causes MakeFrmFmt to put two
// objects of type SwUndoFrmFmt on the undo stack. We don't want them.
@@ -668,12 +676,19 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
// versteckt werden soll, koennen wir zur Zeit nicht !!!!
const SwNodeIndex* pIdx = 0;
{
- const SwSectionNode* pSectNd;
- if( rSect.IsHidden() && 0 != (pIdx = pFmt->GetCntnt().GetCntntIdx() )
- && 0 != (pSectNd = pIdx->GetNode().GetSectionNode() ) )
+ if (rNewData.IsHidden())
{
- ::lcl_CheckEmptyLayFrm( GetNodes(), (SwSection&)rSect,
+ pIdx = pFmt->GetCntnt().GetCntntIdx();
+ if (pIdx)
+ {
+ const SwSectionNode* pSectNd =
+ pIdx->GetNode().GetSectionNode();
+ if (pSectNd)
+ {
+ ::lcl_CheckEmptyLayFrm( GetNodes(), rNewData,
*pSectNd, *pSectNd->EndOfSectionNode() );
+ }
+ }
}
}
@@ -681,7 +696,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
if( DoesUndo() )
{
ClearRedo();
- AppendUndo( new SwUndoChgSection( *pFmt, FALSE ) );
+ AppendUndo( MakeUndoUpdateSection( *pFmt, false ) );
// --> FME 2004-10-13 #i32968#
// Inserting columns in the section causes MakeFrmFmt to put two
// objects of type SwUndoFrmFmt on the undo stack. We don't want them.
@@ -692,14 +707,14 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
// #56167# Der LinkFileName koennte auch nur aus Separatoren bestehen
String sCompareString = sfx2::cTokenSeperator;
sCompareString += sfx2::cTokenSeperator;
- BOOL bUpdate = ( !pSection->IsLinkType() && rSect.IsLinkType() ) ||
- ( rSect.GetLinkFileName().Len() &&
- rSect.GetLinkFileName() != sCompareString &&
- rSect.GetLinkFileName() !=
- pSection->GetLinkFileName());
-
- String sSectName( rSect.GetName() );
- if( sSectName != pSection->GetName() )
+ const bool bUpdate =
+ (!pSection->IsLinkType() && rNewData.IsLinkType())
+ || ( rNewData.GetLinkFileName().Len()
+ && (rNewData.GetLinkFileName() != sCompareString)
+ && (rNewData.GetLinkFileName() != pSection->GetLinkFileName()));
+
+ String sSectName( rNewData.GetSectionName() );
+ if (sSectName != pSection->GetSectionName())
GetUniqueSectionName( &sSectName );
else
sSectName.Erase();
@@ -711,13 +726,15 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
/// or it is set to the value of SwSection which is assigned to it.
/// Discussion with AMA results that the adjustment to the assignment operator
/// could be very risky -> see notes in bug #102894#.
- *pSection = rSect;
+ pSection->SetSectionData(rNewData);
if( pAttr )
pSection->GetFmt()->SetFmtAttr( *pAttr );
if( sSectName.Len() )
- pSection->SetName( sSectName );
+ {
+ pSection->SetSectionName( sSectName );
+ }
// ist eine Condition gesetzt
if( pSection->IsHidden() && pSection->GetCondition().Len() )
@@ -729,7 +746,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
FldsToCalc( aCalc, pIdx->GetIndex(), USHRT_MAX );
/// OD 04.10.2002 #102894#
/// Because on using SwSection::operator=() to set up <pSection>
- /// with <rSect> and the above given note, the hidden condition flag
+ /// with <rNewData> and the above given note, the hidden condition flag
/// has to be set to FALSE, if hidden condition flag of <pFmt->GetSection()>
/// (SwSection before the changes) is FALSE (already saved in <bOldCondHidden>)
/// and new calculated condition is TRUE.
@@ -800,17 +817,18 @@ void lcl_DeleteFtn( SwSectionNode *pNd, ULONG nStt, ULONG nEnd )
}
}
-inline BOOL lcl_IsTOXSection( const SwSection& rSection )
+static inline bool lcl_IsTOXSection(SwSectionData const& rSectionData)
{
- return TOX_CONTENT_SECTION == rSection.GetType() ||
- TOX_HEADER_SECTION == rSection.GetType();
+ return (TOX_CONTENT_SECTION == rSectionData.GetType())
+ || (TOX_HEADER_SECTION == rSectionData.GetType());
}
-SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
+SwSectionNode* SwNodes::InsertTextSection(SwNodeIndex const& rNdIdx,
SwSectionFmt& rSectionFmt,
- const SwSection& rSection,
- const SwNodeIndex* pEnde,
- BOOL bInsAtStart, BOOL bCreateFrms )
+ SwSectionData const& rSectionData,
+ SwTOXBase const*const pTOXBase,
+ SwNodeIndex const*const pEnde,
+ bool const bInsAtStart, bool const bCreateFrms)
{
SwNodeIndex aInsPos( rNdIdx );
if( !pEnde ) // kein Bereich also neue Section davor/hinter anlegen
@@ -821,7 +839,7 @@ SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
if( bInsAtStart )
{
- if( !lcl_IsTOXSection( rSection ))
+ if (!lcl_IsTOXSection(rSectionData))
{
do {
aInsPos--;
@@ -833,15 +851,20 @@ SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
{
SwNode* pNd;
aInsPos++;
- if( !lcl_IsTOXSection( rSection ))
+ if (!lcl_IsTOXSection(rSectionData))
+ {
while( aInsPos.GetIndex() < Count() - 1 &&
( pNd = &aInsPos.GetNode())->IsEndNode() &&
pNd->StartOfSectionNode()->IsSectionNode())
+ {
aInsPos++;
+ }
+ }
}
}
- SwSectionNode* pSectNd = new SwSectionNode( aInsPos, rSectionFmt );
+ SwSectionNode *const pSectNd =
+ new SwSectionNode(aInsPos, rSectionFmt, pTOXBase);
if( pEnde )
{
// Sonderfall fuer die Reader/Writer
@@ -908,7 +931,7 @@ SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
}
new SwEndNode( aInsPos, *pSectNd );
- pSectNd->GetSection() = rSection;
+ pSectNd->GetSection().SetSectionData(rSectionData);
SwSectionFmt* pSectFmt = pSectNd->GetSection().GetFmt();
// Hier bietet sich als Optimierung an, vorhandene Frames nicht zu
@@ -998,17 +1021,28 @@ SwSectionNode* SwNode::FindSectionNode()
// SwSectionNode
//---------
-SwSectionNode::SwSectionNode( const SwNodeIndex& rIdx, SwSectionFmt& rFmt )
- : SwStartNode( rIdx, ND_SECTIONNODE )
+// ugly hack to make m_pSection const
+static SwSectionFmt &
+lcl_initParent(SwSectionNode & rThis, SwSectionFmt & rFmt)
{
- SwSectionNode* pParent = StartOfSectionNode()->FindSectionNode();
+ SwSectionNode *const pParent =
+ rThis.StartOfSectionNode()->FindSectionNode();
if( pParent )
{
// das Format beim richtigen Parent anmelden.
rFmt.SetDerivedFrom( pParent->GetSection().GetFmt() );
}
- pSection = new SwSection( CONTENT_SECTION, rFmt.GetName(), &rFmt );
+ return rFmt;
+}
+SwSectionNode::SwSectionNode(SwNodeIndex const& rIdx,
+ SwSectionFmt & rFmt, SwTOXBase const*const pTOXBase)
+ : SwStartNode( rIdx, ND_SECTIONNODE )
+ , m_pSection( (pTOXBase)
+ ? new SwTOXBaseSection(*pTOXBase, lcl_initParent(*this, rFmt))
+ : new SwSection( CONTENT_SECTION, rFmt.GetName(),
+ lcl_initParent(*this, rFmt) ) )
+{
// jetzt noch die Verbindung von Format zum Node setzen
// Modify unterdruecken, interresiert keinen
rFmt.LockModify();
@@ -1049,7 +1083,7 @@ SwFrm* SwClearDummies( SwFrm* pFrm )
SwSectionNode::~SwSectionNode()
{
{
- SwClientIter aIter( *(pSection->GetFmt()) );
+ SwClientIter aIter( *(m_pSection->GetFmt()) );
SwClient *pLast = aIter.GoStart();
while ( pLast )
{
@@ -1065,7 +1099,7 @@ SwSectionNode::~SwSectionNode()
}
SwDoc* pDoc = GetDoc();
- SwSectionFmt* pFmt = pSection->GetFmt();
+ SwSectionFmt* pFmt = m_pSection->GetFmt();
if( pFmt )
{
// das Attribut entfernen, weil die Section ihr Format loescht
@@ -1079,41 +1113,14 @@ SwSectionNode::~SwSectionNode()
// verhinder beim Loeschen aus der Undo/Redo-History einen rekursiven Aufruf
if( bUndo && &pDoc->GetNodes() != &GetNodes() )
pDoc->DoUndo( FALSE );
- DELETEZ( pSection );
pDoc->DoUndo( bUndo );
}
-// setze ein neues SectionObject. Erstmal nur gedacht fuer die
-// neuen VerzeichnisSections. Der geht ueber in den Besitz des Nodes!
-void SwSectionNode::SetNewSection( SwSection* pNewSection )
-{
- ASSERT( pNewSection, "ohne Pointer geht hier nichts" );
- if( pNewSection )
- {
- SwNode2Layout aN2L( *this );
-
- // einige Flags sollten ueber nommen werden!
- pNewSection->bProtectFlag = pSection->bProtectFlag;
- pNewSection->bHiddenFlag = pSection->bHiddenFlag;
- pNewSection->bHidden = pSection->bHidden;
- pNewSection->bCondHiddenFlag = pSection->bCondHiddenFlag;
-
- // The section frame contains a pointer to the section. That for,
- // the frame must be destroyed before deleting the section.
- DelFrms();
-
- delete pSection;
- pSection = pNewSection;
-
- ULONG nIdx = GetIndex();
- aN2L.RestoreUpperFrms( GetNodes(), nIdx, nIdx + 1 );
- }
-}
SwFrm *SwSectionNode::MakeFrm()
{
- pSection->bHiddenFlag = FALSE;
- return new SwSectionFrm( *pSection );
+ m_pSection->m_Data.SetHiddenFlag(false);
+ return new SwSectionFrm( *m_pSection );
}
//Methode erzeugt fuer den vorhergehenden Node alle Ansichten vom
@@ -1240,7 +1247,7 @@ void SwSectionNode::MakeFrms( SwNodeIndex* pIdxBehind, SwNodeIndex* pEndIdx )
*pIdxBehind = *this;
- pSection->bHiddenFlag = TRUE;
+ m_pSection->m_Data.SetHiddenFlag(true);
if( rNds.IsDocNodes() )
{
@@ -1264,10 +1271,10 @@ void SwSectionNode::DelFrms()
}
SwNodes& rNds = GetNodes();
- pSection->GetFmt()->DelFrms();
+ m_pSection->GetFmt()->DelFrms();
// unser Flag muessen wir noch aktualisieren
- pSection->bHiddenFlag = TRUE;
+ m_pSection->m_Data.SetHiddenFlag(true);
// Bug 30582: falls der Bereich in Fly oder TabellenBox ist, dann
// kann er nur "gehiddet" werden, wenn weiterer Content
@@ -1285,7 +1292,9 @@ void SwSectionNode::DelFrms()
!CheckNodesRange( *EndOfSectionNode(), aIdx, TRUE ) ||
// OD 04.11.2003 #i21457#
!lcl_IsInSameTblBox( rNds, *EndOfSectionNode(), false ))
- pSection->bHiddenFlag = FALSE;
+ {
+ m_pSection->m_Data.SetHiddenFlag(false);
+ }
}
}
}
@@ -1299,37 +1308,35 @@ SwSectionNode* SwSectionNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) c
SwSectionFmt* pSectFmt = pDoc->MakeSectionFmt( 0 );
pSectFmt->CopyAttrs( *GetSection().GetFmt() );
- SwSectionNode* pSectNd = new SwSectionNode( rIdx, *pSectFmt );
+ ::std::auto_ptr<SwTOXBase> pTOXBase;
+ if (TOX_CONTENT_SECTION == GetSection().GetType())
+ {
+ ASSERT( GetSection().ISA( SwTOXBaseSection ), "no TOXBaseSection!" );
+ SwTOXBaseSection const& rTBS(
+ dynamic_cast<SwTOXBaseSection const&>(GetSection()));
+ pTOXBase.reset( new SwTOXBase(rTBS, pDoc) );
+ }
+
+ SwSectionNode *const pSectNd =
+ new SwSectionNode(rIdx, *pSectFmt, pTOXBase.get());
SwEndNode* pEndNd = new SwEndNode( rIdx, *pSectNd );
SwNodeIndex aInsPos( *pEndNd );
// Werte uebertragen
- SwSection* pNewSect = pSectNd->pSection;
+ SwSection *const pNewSect = pSectNd->m_pSection.get();
- switch( GetSection().GetType() )
+ if (TOX_CONTENT_SECTION != GetSection().GetType())
{
- case TOX_CONTENT_SECTION:
- {
- ASSERT( GetSection().ISA( SwTOXBaseSection ), "keine TOXBaseSection!" );
- SwTOXBaseSection& rTOXSect = (SwTOXBaseSection&)GetSection();
- SwTOXBase aTmp( rTOXSect, pDoc );
-
- SwTOXBaseSection* pNew = new SwTOXBaseSection( aTmp );
-
- pNewSect = pNew;
- pSectFmt->Add( pNewSect );
- pSectNd->SetNewSection( pNew );
- }
- break;
-
- default:
// beim Move den Namen beibehalten
if( rNds.GetDoc() == pDoc && pDoc->IsCopyIsMove() )
- pNewSect->SetName( GetSection().GetName() );
+ {
+ pNewSect->SetSectionName( GetSection().GetSectionName() );
+ }
else
- pNewSect->SetName( pDoc->GetUniqueSectionName(
- &GetSection().GetName() ) );
- break;
+ {
+ pNewSect->SetSectionName(
+ pDoc->GetUniqueSectionName( &GetSection().GetSectionName() ));
+ }
}
@@ -1358,18 +1365,22 @@ SwSectionNode* SwSectionNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) c
: CREATE_NONE );
// falls als Server aus dem Undo kopiert wird, wieder eintragen
- if( pSection->IsServer() && pDoc->GetUndoNds() == &rNds )
+ if (m_pSection->IsServer() && (pDoc->GetUndoNds() == &rNds))
{
- pNewSect->SetRefObject( pSection->GetObject() );
+ pNewSect->SetRefObject( m_pSection->GetObject() );
pDoc->GetLinkManager().InsertServer( pNewSect->GetObject() );
}
+ // METADATA: copy xml:id; must be done after insertion of node
+ pSectFmt->RegisterAsCopyOf(*GetSection().GetFmt());
+
return pSectNd;
}
BOOL SwSectionNode::IsCntntHidden() const
{
- ASSERT( !pSection->IsHidden(), "That's simple: Hidden Section => Hidden Content" );
+ ASSERT( !m_pSection->IsHidden(),
+ "That's simple: Hidden Section => Hidden Content" );
SwNodeIndex aTmp( *this, 1 );
ULONG nEnd = EndOfSectionIndex();
while( aTmp < nEnd )
@@ -1395,7 +1406,7 @@ BOOL SwSectionNode::IsCntntHidden() const
void SwSectionNode::NodesArrChgd()
{
- SwSectionFmt* pFmt = pSection->GetFmt();
+ SwSectionFmt *const pFmt = m_pSection->GetFmt();
if( pFmt )
{
SwNodes& rNds = GetNodes();
@@ -1431,20 +1442,28 @@ void SwSectionNode::NodesArrChgd()
{
ASSERT( pDoc == GetDoc(),
"verschieben in unterschiedliche Documente?" );
- if( pSection->IsLinkType() ) // den Link austragen
- pSection->CreateLink( pDoc->GetRootFrm() ? CREATE_CONNECT
+ if (m_pSection->IsLinkType())
+ {
+ m_pSection->CreateLink( pDoc->GetRootFrm() ? CREATE_CONNECT
: CREATE_NONE );
+ }
- if( pSection->IsServer() ) // als Server austragen
- pDoc->GetLinkManager().InsertServer( pSection->GetObject() );
+ if (m_pSection->IsServer())
+ {
+ pDoc->GetLinkManager().InsertServer( m_pSection->GetObject() );
+ }
}
else
{
- if( CONTENT_SECTION != pSection->GetType() ) // den Link austragen
- pDoc->GetLinkManager().Remove( &pSection->GetBaseLink() );
+ if (CONTENT_SECTION != m_pSection->GetType())
+ {
+ pDoc->GetLinkManager().Remove( &m_pSection->GetBaseLink() );
+ }
- if( pSection->IsServer() ) // als Server austragen
- pDoc->GetLinkManager().RemoveServer( pSection->GetObject() );
+ if (m_pSection->IsServer())
+ {
+ pDoc->GetLinkManager().RemoveServer( m_pSection->GetObject() );
+ }
}
}
}
@@ -1467,7 +1486,7 @@ String SwDoc::GetUniqueSectionName( const String* pChkStr ) const
for( n = 0; n < pSectionFmtTbl->Count(); ++n )
if( 0 != ( pSectNd = (*pSectionFmtTbl)[ n ]->GetSectionNode( FALSE ) ))
{
- const String& rNm = pSectNd->GetSection().GetName();
+ const String& rNm = pSectNd->GetSection().GetSectionName();
if( rNm.Match( aName ) == nNmLen )
{
// Nummer bestimmen und das Flag setzen
diff --git a/sw/source/core/docnode/node2lay.cxx b/sw/source/core/docnode/node2lay.cxx
index b0d6a4a931b5..cce0919e1e1a 100644
--- a/sw/source/core/docnode/node2lay.cxx
+++ b/sw/source/core/docnode/node2lay.cxx
@@ -233,8 +233,8 @@ SwLayoutFrm* SwNode2LayImpl::UpperFrm( SwFrm* &rpFrm, const SwNode &rNode )
{
// #137684#: pFrm could be a "dummy"-section
if( ((SwSectionFrm*)pFrm)->GetSection() &&
- ((SwSectionNode*)pNode)->GetSection() ==
- *((SwSectionFrm*)pFrm)->GetSection() )
+ (&((SwSectionNode*)pNode)->GetSection() ==
+ ((SwSectionFrm*)pFrm)->GetSection()) )
{
// OD 2004-06-02 #i22922# - consider columned sections
// 'Go down' the section frame as long as the layout frame
diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx
index 653ce6794e7e..2d54cb88f2e6 100644
--- a/sw/source/core/docnode/section.cxx
+++ b/sw/source/core/docnode/section.cxx
@@ -51,9 +51,7 @@
#include <frmtool.hxx>
#include <editsh.hxx>
#include <hints.hxx>
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
#include <ndtxt.hxx>
#include <section.hxx>
#include <swserv.hxx>
@@ -70,6 +68,7 @@
#include <fmteiro.hxx>
// <--
#include <swerror.h>
+#include <unosection.hxx>
using namespace ::com::sun::star;
@@ -115,39 +114,126 @@ SV_IMPL_PTRARR( SwSections, SwSection*)
SV_IMPL_PTRARR(SwSectionFmts,SwSectionFmt*)
+SwSectionData::SwSectionData(SectionType const eType, String const& rName)
+ : m_eType(eType)
+ , m_sSectionName(rName)
+ , m_bHiddenFlag(false)
+ , m_bProtectFlag(false)
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ , m_bEditInReadonlyFlag(false)
+ // <--
+ , m_bHidden(false)
+ , m_bCondHiddenFlag(true)
+ , m_bConnectFlag(true)
+{
+}
-SwSection::SwSection( SectionType eTyp, const String& rName,
- SwSectionFmt* pFmt )
- : SwClient( pFmt ), sSectionNm( rName ),
- eType( eTyp )
+// this must have the same semantics as operator=()
+SwSectionData::SwSectionData(SwSection const& rSection)
+ : m_eType(rSection.GetType())
+ , m_sSectionName(rSection.GetSectionName())
+ , m_sCondition(rSection.GetCondition())
+ , m_sLinkFileName(rSection.GetLinkFileName())
+ , m_sLinkFilePassword(rSection.GetLinkFilePassword())
+ , m_Password(rSection.GetPassword())
+ , m_bHiddenFlag(rSection.IsHiddenFlag())
+ , m_bProtectFlag(rSection.IsProtect())
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ , m_bEditInReadonlyFlag(rSection.IsEditInReadonly())
+ // <--
+ , m_bHidden(rSection.IsHidden())
+ , m_bCondHiddenFlag(true)
+ , m_bConnectFlag(rSection.IsConnectFlag())
{
- bHidden = FALSE;
- bHiddenFlag = FALSE;
- bProtectFlag = FALSE;
+}
+
+// this must have the same semantics as operator=()
+SwSectionData::SwSectionData(SwSectionData const& rOther)
+ : m_eType(rOther.m_eType)
+ , m_sSectionName(rOther.m_sSectionName)
+ , m_sCondition(rOther.m_sCondition)
+ , m_sLinkFileName(rOther.m_sLinkFileName)
+ , m_sLinkFilePassword(rOther.m_sLinkFilePassword)
+ , m_Password(rOther.m_Password)
+ , m_bHiddenFlag(rOther.m_bHiddenFlag)
+ , m_bProtectFlag(rOther.m_bProtectFlag)
// --> FME 2004-06-22 #114856# edit in readonly sections
- bEditInReadonlyFlag = FALSE;
+ , m_bEditInReadonlyFlag(rOther.m_bEditInReadonlyFlag)
// <--
- bCondHiddenFlag = TRUE;
- bConnectFlag = TRUE;
+ , m_bHidden(rOther.m_bHidden)
+ , m_bCondHiddenFlag(true)
+ , m_bConnectFlag(rOther.m_bConnectFlag)
+{
+}
+
+// the semantics here are weird for reasons of backward compatibility
+SwSectionData & SwSectionData::operator= (SwSectionData const& rOther)
+{
+ m_eType = rOther.m_eType;
+ m_sSectionName = rOther.m_sSectionName;
+ m_sCondition = rOther.m_sCondition;
+ m_sLinkFileName = rOther.m_sLinkFileName;
+ m_sLinkFilePassword = rOther.m_sLinkFilePassword;
+ m_bConnectFlag = rOther.m_bConnectFlag;
+ m_Password = rOther.m_Password;
+
+ m_bEditInReadonlyFlag = rOther.m_bEditInReadonlyFlag;
+ m_bProtectFlag = rOther.m_bProtectFlag;
+
+ m_bHidden = rOther.m_bHidden;
+ // FIXME: old code did not assign m_bHiddenFlag ?
+ // FIXME: why should m_bCondHiddenFlag always default to true?
+ m_bCondHiddenFlag = true;
- SwSectionPtr pParentSect = GetParent();
+ return *this;
+}
+
+// the semantics here are weird for reasons of backward compatibility
+bool SwSectionData::operator==(SwSectionData const& rOther) const
+{
+ return (m_eType == rOther.m_eType)
+ && (m_sSectionName == rOther.m_sSectionName)
+ && (m_sCondition == rOther.m_sCondition)
+ && (m_bHidden == rOther.m_bHidden)
+ && (m_bProtectFlag == rOther.m_bProtectFlag)
+ && (m_bEditInReadonlyFlag == rOther.m_bEditInReadonlyFlag)
+ && (m_sLinkFileName == rOther.m_sLinkFileName)
+ && (m_sLinkFilePassword == rOther.m_sLinkFilePassword)
+ && (m_Password == rOther.m_Password);
+ // FIXME: old code ignored m_bCondHiddenFlag m_bHiddenFlag m_bConnectFlag
+}
+
+// SwSection ===========================================================
+
+SwSection::SwSection(
+ SectionType const eType, String const& rName, SwSectionFmt & rFormat)
+ : SwClient(& rFormat)
+ , m_Data(eType, rName)
+{
+ SwSection *const pParentSect = GetParent();
if( pParentSect )
{
if( pParentSect->IsHiddenFlag() )
- SetHidden( TRUE );
+ {
+ SetHidden( true );
+ }
- _SetProtectFlag( pParentSect->IsProtectFlag() );
+ m_Data.SetProtectFlag( pParentSect->IsProtectFlag() );
// --> FME 2004-06-22 #114856# edit in readonly sections
- _SetEditInReadonlyFlag( pParentSect->IsEditInReadonlyFlag() );
+ m_Data.SetEditInReadonlyFlag( pParentSect->IsEditInReadonlyFlag() );
// <--
}
- if( pFmt && !bProtectFlag )
- _SetProtectFlag( pFmt->GetProtect().IsCntntProtected() );
+ if (!m_Data.IsProtectFlag())
+ {
+ m_Data.SetProtectFlag( rFormat.GetProtect().IsCntntProtected() );
+ }
// --> FME 2004-06-22 #114856# edit in readonly sections
- if ( pFmt && !bEditInReadonlyFlag )
- _SetEditInReadonlyFlag( pFmt->GetEditInReadonly().GetValue() );
+ if (!m_Data.IsEditInReadonlyFlag())
+ {
+ m_Data.SetEditInReadonlyFlag( rFormat.GetEditInReadonly().GetValue() );
+ }
// <--
}
@@ -170,11 +256,15 @@ SwSection::~SwSection()
{
pFmt->Remove( this ); // austragen,
- if( CONTENT_SECTION != eType ) // den Link austragen
- pDoc->GetLinkManager().Remove( refLink );
+ if (CONTENT_SECTION != m_Data.GetType())
+ {
+ pDoc->GetLinkManager().Remove( m_RefLink );
+ }
- if( refObj.Is() ) // als Server austragen
- pDoc->GetLinkManager().RemoveServer( &refObj );
+ if (m_RefObj.Is())
+ {
+ pDoc->GetLinkManager().RemoveServer( &m_RefObj );
+ }
// ist die Section der letzte Client im Format, kann dieses
// geloescht werden
@@ -190,78 +280,56 @@ SwSection::~SwSection()
pDoc->DoUndo( bUndo );
}
}
- if( refObj.Is() )
- refObj->Closed();
+ if (m_RefObj.Is())
+ {
+ m_RefObj->Closed();
+ }
}
-
-SwSection& SwSection::operator=( const SwSection& rCpy )
+void SwSection::SetSectionData(SwSectionData const& rData)
{
- sSectionNm = rCpy.sSectionNm;
- sCondition = rCpy.sCondition;
- sLinkFileName = rCpy.GetLinkFileName();
- SetLinkFilePassWd( rCpy.GetLinkFilePassWd() );
- SetConnectFlag( rCpy.IsConnectFlag() );
- SetPasswd( rCpy.GetPasswd() );
-
- eType = rCpy.eType;
-
- if( !GetFmt() )
+ bool const bOldHidden( m_Data.IsHidden() );
+ m_Data = rData;
+ // now update format and reflink with new data
+// SetLinkFileName(m_Data.GetLinkFileName()); // old code did not do this?
+ // next 2 may actually overwrite m_Data.m_b{Protect,EditInReadonly}Flag
+ // in Modify, which should result in same flag value as the old code!
+ SetProtect(m_Data.IsProtectFlag());
+ SetEditInReadonly(m_Data.IsEditInReadonlyFlag());
+ if (bOldHidden != m_Data.IsHidden()) // check if changed...
{
- SetProtect( rCpy.IsProtect() );
- // --> FME 2004-06-22 #114856# edit in readonly sections
- SetEditInReadonly( rCpy.IsEditInReadonly() );
- // <--
+ ImplSetHiddenFlag(m_Data.IsHidden(), m_Data.IsCondHidden());
}
- else if( rCpy.GetFmt() )
- {
- _SetProtectFlag( rCpy.bProtectFlag );
- // --> FME 2004-06-22 #114856# edit in readonly sections
- _SetEditInReadonlyFlag( rCpy.bEditInReadonlyFlag );
- // <--
- }
- else
- {
- SetProtect( rCpy.bProtectFlag );
- // --> FME 2004-06-22 #114856# edit in readonly sections
- SetEditInReadonly( rCpy.bEditInReadonlyFlag );
- // <--
- }
-
- bCondHiddenFlag = TRUE; // sollte immer defaultet werden
- SetHidden( rCpy.bHidden );
-
- return *this;
}
-
-BOOL SwSection::operator==( const SwSection& rCmp ) const
+bool SwSection::DataEquals(SwSectionData const& rCmp) const
{
- return sSectionNm == rCmp.sSectionNm &&
- sCondition == rCmp.sCondition &&
- eType == rCmp.eType &&
- bHidden == rCmp.bHidden &&
- IsProtect() == rCmp.IsProtect() &&
- // --> FME 2004-06-22 #114856# edit in readonly sections
- IsEditInReadonly() == rCmp.IsEditInReadonly() &&
- // <--
- GetLinkFileName() == rCmp.GetLinkFileName() &&
- GetLinkFilePassWd() == rCmp.GetLinkFilePassWd() &&
- GetPasswd() == rCmp.GetPasswd() &&
- ( !GetFmt() || !rCmp.GetFmt() || GetFmt() == rCmp.GetFmt());
+ // note that the old code compared the flags of the parameter with the
+ // format attributes of this; the following mess should do the same...
+ (void) GetLinkFileName(); // updates m_sLinkFileName
+ bool const bProtect(m_Data.IsProtectFlag());
+ bool const bEditInReadonly(m_Data.IsEditInReadonlyFlag());
+ const_cast<SwSection*>(this)->m_Data.SetProtectFlag(IsProtect());
+ const_cast<SwSection*>(this)->m_Data
+ .SetEditInReadonlyFlag(IsEditInReadonly());
+ bool const bResult( m_Data == rCmp );
+ const_cast<SwSection*>(this)->m_Data.SetProtectFlag(bProtect);
+ const_cast<SwSection*>(this)->m_Data.SetEditInReadonlyFlag(bEditInReadonly);
+ return bResult;
}
-void SwSection::_SetHiddenFlag( BOOL bTmpHidden, BOOL bCondition )
+void SwSection::ImplSetHiddenFlag(bool const bTmpHidden, bool const bCondition)
{
SwSectionFmt* pFmt = GetFmt();
+ ASSERT(pFmt, "ImplSetHiddenFlag: no format?");
if( pFmt )
{
- BOOL bHide = bTmpHidden && bCondition;
+ const bool bHide = bTmpHidden && bCondition;
- if( bHide ) // die Nodes also "verstecken"
+ if (bHide) // should be hidden
{
- if( !bHiddenFlag ) // ist nicht versteckt
+ if (!m_Data.IsHiddenFlag()) // is not hidden
{
// wie sieht es mit dem Parent aus, ist der versteckt ?
// (eigentlich muesste das vom bHiddenFlag angezeigt werden!)
@@ -274,7 +342,7 @@ void SwSection::_SetHiddenFlag( BOOL bTmpHidden, BOOL bCondition )
pFmt->DelFrms();
}
}
- else if( bHiddenFlag ) // die Nodes wieder anzeigen
+ else if (m_Data.IsHiddenFlag()) // show Nodes again
{
// alle Frames sichtbar machen ( Childs Sections werden vom
// MakeFrms beruecksichtigt). Aber nur wenn die ParentSection
@@ -304,57 +372,76 @@ BOOL SwSection::CalcHiddenFlag() const
return FALSE;
}
-BOOL SwSection::_IsProtect() const
+bool SwSection::IsProtect() const
{
- return GetFmt()->GetProtect().IsCntntProtected();
+ SwSectionFmt *const pFmt( GetFmt() );
+ ASSERT(pFmt, "SwSection::IsProtect: no format?");
+ return (pFmt)
+ ? pFmt->GetProtect().IsCntntProtected()
+ : IsProtectFlag();
}
// --> FME 2004-06-22 #114856# edit in readonly sections
-BOOL SwSection::_IsEditInReadonly() const
+bool SwSection::IsEditInReadonly() const
{
- return GetFmt()->GetEditInReadonly().GetValue();
+ SwSectionFmt *const pFmt( GetFmt() );
+ ASSERT(pFmt, "SwSection::IsEditInReadonly: no format?");
+ return (pFmt)
+ ? pFmt->GetEditInReadonly().GetValue()
+ : IsEditInReadonlyFlag();
}
// <--
-void SwSection::SetHidden( BOOL bFlag )
+void SwSection::SetHidden(bool const bFlag)
{
- if( !bHidden == !bFlag )
+ if (!m_Data.IsHidden() == !bFlag)
return;
- bHidden = bFlag;
- _SetHiddenFlag( bHidden, bCondHiddenFlag );
+ m_Data.SetHidden(bFlag);
+ ImplSetHiddenFlag(bFlag, m_Data.IsCondHidden());
}
-void SwSection::SetProtect( BOOL bFlag )
+void SwSection::SetProtect(bool const bFlag)
{
- if( GetFmt() )
+ SwSectionFmt *const pFormat( GetFmt() );
+ ASSERT(pFormat, "SwSection::SetProtect: no format?");
+ if (pFormat)
{
SvxProtectItem aItem( RES_PROTECT );
aItem.SetCntntProtect( (BOOL)bFlag );
- GetFmt()->SetFmtAttr( aItem );
+ pFormat->SetFmtAttr( aItem );
+ // note: this will call m_Data.SetProtectFlag via Modify!
}
else
- bProtectFlag = bFlag;
+ {
+ m_Data.SetProtectFlag(bFlag);
+ }
}
// --> FME 2004-06-22 #114856# edit in readonly sections
-void SwSection::SetEditInReadonly( BOOL bFlag )
+void SwSection::SetEditInReadonly(bool const bFlag)
{
- if( GetFmt() )
+ SwSectionFmt *const pFormat( GetFmt() );
+ ASSERT(pFormat, "SwSection::SetEditInReadonly: no format?");
+ if (pFormat)
{
SwFmtEditInReadonly aItem;
aItem.SetValue( (BOOL)bFlag );
- GetFmt()->SetFmtAttr( aItem );
+ pFormat->SetFmtAttr( aItem );
+ // note: this will call m_Data.SetEditInReadonlyFlag via Modify!
}
else
- bEditInReadonlyFlag = bFlag;
+ {
+ m_Data.SetEditInReadonlyFlag(bFlag);
+ }
}
// <--
void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
{
- BOOL bRemake = FALSE, bUpdateFtn = FALSE;
+ bool bRemake = false;
+ bool bUpdateFtn = false;
switch( pOld ? pOld->Which() : pNew ? pNew->Which() : 0 )
{
case RES_ATTRSET_CHG:
@@ -366,7 +453,8 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
if( SFX_ITEM_SET == pNewSet->GetItemState(
RES_PROTECT, FALSE, &pItem ) )
{
- _SetProtectFlag( ((SvxProtectItem*)pItem)->IsCntntProtected() );
+ m_Data.SetProtectFlag( static_cast<SvxProtectItem const*>(pItem)
+ ->IsCntntProtected() );
pNewSet->ClearItem( RES_PROTECT );
pOldSet->ClearItem( RES_PROTECT );
}
@@ -375,7 +463,8 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
if( SFX_ITEM_SET == pNewSet->GetItemState(
RES_EDIT_IN_READONLY, FALSE, &pItem ) )
{
- _SetEditInReadonlyFlag( ((SwFmtEditInReadonly*)pItem)->GetValue() );
+ m_Data.SetEditInReadonlyFlag(
+ static_cast<SwFmtEditInReadonly const*>(pItem)->GetValue());
pNewSet->ClearItem( RES_EDIT_IN_READONLY );
pOldSet->ClearItem( RES_EDIT_IN_READONLY );
}
@@ -385,7 +474,9 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
RES_FTN_AT_TXTEND, FALSE, &pItem ) ||
SFX_ITEM_SET == pNewSet->GetItemState(
RES_END_AT_TXTEND, FALSE, &pItem ))
- bUpdateFtn = TRUE;
+ {
+ bUpdateFtn = true;
+ }
if( !pNewSet->Count() )
return;
@@ -395,7 +486,8 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
case RES_PROTECT:
if( pNew )
{
- BOOL bNewFlag = ((SvxProtectItem*)pNew)->IsCntntProtected();
+ bool bNewFlag =
+ static_cast<SvxProtectItem*>(pNew)->IsCntntProtected();
if( !bNewFlag )
{
// Abschalten: teste ob nicht vielleich ueber die Parents
@@ -404,32 +496,34 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
do {
if( pSect->IsProtect() )
{
- bNewFlag = TRUE;
+ bNewFlag = true;
break;
}
- } while( 0 != ( pSect = pSect->GetParent()) );
+ pSect = pSect->GetParent();
+ } while (pSect);
}
- _SetProtectFlag( bNewFlag );
+ m_Data.SetProtectFlag( bNewFlag );
}
return;
// --> FME 2004-06-22 #114856# edit in readonly sections
case RES_EDIT_IN_READONLY:
if( pNew )
{
- BOOL bNewFlag = ((SwFmtEditInReadonly*)pNew)->GetValue();
- _SetEditInReadonlyFlag( bNewFlag );
+ const bool bNewFlag =
+ static_cast<SwFmtEditInReadonly*>(pNew)->GetValue();
+ m_Data.SetEditInReadonlyFlag( bNewFlag );
}
return;
// <--
case RES_SECTION_HIDDEN:
- bHiddenFlag = TRUE;
+ m_Data.SetHiddenFlag(true);
return;
case RES_SECTION_NOT_HIDDEN:
case RES_SECTION_RESETHIDDENFLAG:
- bHiddenFlag = bHidden && bCondHiddenFlag;
+ m_Data.SetHiddenFlag( m_Data.IsHidden() && m_Data.IsCondHidden() );
return;
case RES_COL:
@@ -438,12 +532,16 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
case RES_FTN_AT_TXTEND:
if( pNew && pOld )
- bUpdateFtn = TRUE;
+ {
+ bUpdateFtn = true;
+ }
break;
case RES_END_AT_TXTEND:
if( pNew && pOld )
- bUpdateFtn = TRUE;
+ {
+ bUpdateFtn = true;
+ }
break;
}
@@ -464,38 +562,38 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
void SwSection::SetRefObject( SwServerObject* pObj )
{
- refObj = pObj;
+ m_RefObj = pObj;
}
-void SwSection::SetCondHidden( BOOL bFlag )
+void SwSection::SetCondHidden(bool const bFlag)
{
- if( !bCondHiddenFlag == !bFlag )
+ if (!m_Data.IsCondHidden() == !bFlag)
return;
- bCondHiddenFlag = bFlag;
- _SetHiddenFlag( bHidden, bCondHiddenFlag );
+ m_Data.SetCondHidden(bFlag);
+ ImplSetHiddenFlag(m_Data.IsHidden(), bFlag);
}
// setze/erfrage den gelinkten FileNamen
const String& SwSection::GetLinkFileName() const
{
- if( refLink.Is() )
+ if (m_RefLink.Is())
{
String sTmp;
- switch( eType )
+ switch (m_Data.GetType())
{
case DDE_LINK_SECTION:
- sTmp = refLink->GetLinkSourceName();
+ sTmp = m_RefLink->GetLinkSourceName();
break;
case FILE_LINK_SECTION:
{
String sRange, sFilter;
- if( refLink->GetLinkManager() &&
- refLink->GetLinkManager()->GetDisplayNames(
- refLink, 0, &sTmp, &sRange, &sFilter ) )
+ if (m_RefLink->GetLinkManager() &&
+ m_RefLink->GetLinkManager()->GetDisplayNames(
+ m_RefLink, 0, &sTmp, &sRange, &sFilter ))
{
( sTmp += sfx2::cTokenSeperator ) += sFilter;
( sTmp += sfx2::cTokenSeperator ) += sRange;
@@ -505,26 +603,29 @@ const String& SwSection::GetLinkFileName() const
// ist die Section im UndoNodesArray, dann steht
// der Link nicht im LinkManager, kann also auch nicht
// erfragt werden. Dann returne den akt. Namen
- return sLinkFileName;
+ return m_Data.GetLinkFileName();
}
}
break;
default: break;
}
- ((SwSection*)this)->sLinkFileName = sTmp;
+ const_cast<SwSection*>(this)->m_Data.SetLinkFileName(sTmp);
}
- return sLinkFileName;
+ return m_Data.GetLinkFileName();
}
-void SwSection::SetLinkFileName( const String& rNew, const String* pPassWd )
+void SwSection::SetLinkFileName(const String& rNew, String const*const pPassWd)
{
- if( refLink.Is() )
- refLink->SetLinkSourceName( rNew );
- else
- sLinkFileName = rNew;
+ if (m_RefLink.Is())
+ {
+ m_RefLink->SetLinkSourceName( rNew );
+ }
+ m_Data.SetLinkFileName(rNew);
if( pPassWd )
- SetLinkFilePassWd( *pPassWd );
+ {
+ SetLinkFilePassword( *pPassWd );
+ }
}
// falls es ein gelinkter Bereich war, dann muessen alle
@@ -563,6 +664,8 @@ const SwTOXBase* SwSection::GetTOXBase() const
return pRet;
}
+// SwSectionFmt ========================================================
+
SwSectionFmt::SwSectionFmt( SwSectionFmt* pDrvdFrm, SwDoc *pDoc )
: SwFrmFmt( pDoc->GetAttrPool(), sSectionFmtNm, pDrvdFrm )
{
@@ -594,7 +697,7 @@ SwSectionFmt::~SwSectionFmt()
if( !pParentSect || !pParentSect->IsHiddenFlag() )
{
// Nodes wieder anzeigen
- rSect.SetHidden( FALSE );
+ rSect.SetHidden(false);
}
}
SwClientIter aIter( *this );
@@ -621,7 +724,7 @@ SwSectionFmt::~SwSectionFmt()
}
-SwSectionPtr SwSectionFmt::_GetSection() const
+SwSection * SwSectionFmt::GetSection() const
{
if( GetDepends() )
{
@@ -908,7 +1011,8 @@ extern "C" {
const SwSectionPtr pFSect = *(SwSectionPtr*)pFirst;
const SwSectionPtr pSSect = *(SwSectionPtr*)pSecond;
ASSERT( pFSect && pSSect, "ungueltige Sections" );
- StringCompare eCmp = pFSect->GetName().CompareTo( pSSect->GetName() );
+ StringCompare const eCmp =
+ pFSect->GetSectionName().CompareTo( pSSect->GetSectionName() );
return eCmp == COMPARE_EQUAL ? 0
: eCmp == COMPARE_LESS ? 1 : -1;
}
@@ -923,7 +1027,7 @@ USHORT SwSectionFmt::GetChildSections( SwSections& rArr,
if( GetDepends() )
{
- SwClientIter aIter( *(SwSectionFmt*)this );
+ SwClientIter aIter( *this );
SwClient * pLast;
const SwNodeIndex* pIdx;
for( pLast = aIter.First(TYPE(SwSectionFmt)); pLast; pLast = aIter.Next() )
@@ -979,7 +1083,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert
// --> FME 2004-06-22 #114856# edit in readonly sections
const SwFmtEditInReadonly* pEditInReadonly = 0;
// <--
- int bIsHidden = FALSE;
+ bool bIsHidden = false;
SwClientIter aIter( *this );
SwClient * pLast = aIter.GoStart();
@@ -1008,16 +1112,20 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert
bIsHidden = pSection->IsHidden();
}
}
- if( pProtect->IsCntntProtected() !=
- pSection->IsProtectFlag() )
+ if (!pProtect->IsCntntProtected() !=
+ !pSection->IsProtectFlag())
+ {
pLast->Modify( (SfxPoolItem*)pProtect,
(SfxPoolItem*)pProtect );
+ }
// --> FME 2004-06-22 #114856# edit in readonly sections
- if ( pEditInReadonly->GetValue() !=
- pSection->IsEditInReadonlyFlag() )
+ if (!pEditInReadonly->GetValue() !=
+ !pSection->IsEditInReadonlyFlag())
+ {
pLast->Modify( (SfxPoolItem*)pEditInReadonly,
(SfxPoolItem*)pEditInReadonly );
+ }
// <--
if( bIsHidden == pSection->IsHiddenFlag() )
@@ -1054,7 +1162,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert
}
-SwSectionNode* SwSectionFmt::GetSectionNode( BOOL bAlways )
+SwSectionNode* SwSectionFmt::GetSectionNode(bool const bAlways)
{
const SwNodeIndex* pIdx = GetCntnt(FALSE).GetCntntIdx();
if( pIdx && ( bAlways || &pIdx->GetNodes() == &GetDoc()->GetNodes() ))
@@ -1076,6 +1184,49 @@ const SwSection* SwSectionFmt::GetGlobalDocSection() const
return 0;
}
+// sw::Metadatable
+::sfx2::IXmlIdRegistry& SwSectionFmt::GetRegistry()
+{
+ return GetDoc()->GetXmlIdRegistry();
+}
+
+bool SwSectionFmt::IsInClipboard() const
+{
+ return GetDoc()->IsClipBoard();
+}
+
+bool SwSectionFmt::IsInUndo() const
+{
+ return !IsInNodesArr();
+}
+
+bool SwSectionFmt::IsInContent() const
+{
+ SwNodeIndex const*const pIdx = GetCntnt(FALSE).GetCntntIdx();
+ OSL_ENSURE(pIdx, "SwSectionFmt::IsInContent: no index?");
+ return (pIdx) ? !GetDoc()->IsInHeaderFooter(*pIdx) : true;
+}
+
+// n.b.: if the section format represents an index, then there is both a
+// SwXDocumentIndex and a SwXTextSection instance for this single core object.
+// these two can both implement XMetadatable and forward to the same core
+// section format. but here only one UNO object can be returned,
+// so always return the text section.
+uno::Reference< rdf::XMetadatable >
+SwSectionFmt::MakeUnoObject()
+{
+ uno::Reference<rdf::XMetadatable> xMeta;
+ SwSection *const pSection( GetSection() );
+ if (pSection)
+ {
+ xMeta.set( SwXTextSection::CreateXTextSection(this,
+ TOX_HEADER_SECTION == pSection->GetType()),
+ uno::UNO_QUERY );
+ }
+ return xMeta;
+}
+
+
// --> OD 2007-02-14 #b6521322#
// Method to break section links inside a linked section
void lcl_BreakSectionLinksInSect( const SwSectionNode& rSectNd )
@@ -1330,7 +1481,7 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
}
SwSection& rSection = pSectNd->GetSection();
- rSection.SetConnectFlag( FALSE );
+ rSection.SetConnectFlag(false);
::rtl::OUString sNewFileName;
Reader* pRead = 0;
@@ -1362,7 +1513,7 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
else
{
nRet = lcl_FindDocShell( xDocSh, sFileName,
- rSection.GetLinkFilePassWd(),
+ rSection.GetLinkFilePassword(),
sFilter, 0, pDoc->GetDocShell() );
if( nRet )
{
@@ -1374,18 +1525,18 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
if( nRet )
{
- rSection.SetConnectFlag( TRUE );
+ rSection.SetConnectFlag(true);
SwNodeIndex aSave( pPam->GetPoint()->nNode, -1 );
SwNodeRange* pCpyRg = 0;
if( xDocSh->GetMedium() &&
- !rSection.GetLinkFilePassWd().Len() )
+ !rSection.GetLinkFilePassword().Len() )
{
const SfxPoolItem* pItem;
if( SFX_ITEM_SET == xDocSh->GetMedium()->GetItemSet()->
GetItemState( SID_PASSWORD, FALSE, &pItem ) )
- rSection.SetLinkFilePassWd(
+ rSection.SetLinkFilePassword(
((SfxStringItem*)pItem)->GetValue() );
}
@@ -1518,7 +1669,9 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
SwReader aTmpReader( aStrm, aEmptyStr, pDoc->GetDocShell()->GetMedium()->GetBaseURL(), *pPam );
if( !IsError( aTmpReader.Read( *pRead ) ))
- rSection.SetConnectFlag( TRUE );
+ {
+ rSection.SetConnectFlag(true);
+ }
if( pESh )
{
@@ -1565,19 +1718,18 @@ void SwIntrnlSectRefLink::Closed()
else
pSh->StartAction();
- SwSection aSect( CONTENT_SECTION, aEmptyStr );
- aSect = *rSectFmt.GetSection();
- aSect.SetType( CONTENT_SECTION );
- aSect.SetLinkFileName( aEmptyStr );
- aSect.SetHidden( FALSE );
- aSect.SetProtect( FALSE );
+ SwSectionData aSectionData(*rSectFmt.GetSection());
+ aSectionData.SetType( CONTENT_SECTION );
+ aSectionData.SetLinkFileName( aEmptyStr );
+ aSectionData.SetHidden( false );
+ aSectionData.SetProtectFlag( false );
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSect.SetEditInReadonly( FALSE );
+ aSectionData.SetEditInReadonlyFlag( false );
// <--
- aSect.SetConnectFlag( FALSE );
+ aSectionData.SetConnectFlag( false );
- pDoc->ChgSection( n, aSect );
+ pDoc->UpdateSection( n, aSectionData );
// alle in der Section liegenden Links werden sichtbar
SwSectionNode* pSectNd = rSectFmt.GetSectionNode( FALSE );
@@ -1598,21 +1750,26 @@ void SwIntrnlSectRefLink::Closed()
void SwSection::CreateLink( LinkCreateType eCreateType )
{
SwSectionFmt* pFmt = GetFmt();
- if( !pFmt || CONTENT_SECTION == eType )
+ ASSERT(pFmt, "SwSection::CreateLink: no format?");
+ if (!pFmt || (CONTENT_SECTION == m_Data.GetType()))
return ;
USHORT nUpdateType = sfx2::LINKUPDATE_ALWAYS;
- if( !refLink.Is() )
- // dann mal den BaseLink aufbauen
- refLink = new SwIntrnlSectRefLink( *pFmt, nUpdateType, FORMAT_RTF );
+ if (!m_RefLink.Is())
+ {
+ // create BaseLink
+ m_RefLink = new SwIntrnlSectRefLink( *pFmt, nUpdateType, FORMAT_RTF );
+ }
else
- // sonst aus dem Linkmanager entfernen
- pFmt->GetDoc()->GetLinkManager().Remove( refLink );
+ {
+ pFmt->GetDoc()->GetLinkManager().Remove( m_RefLink );
+ }
- SwIntrnlSectRefLink* pLnk = (SwIntrnlSectRefLink*)&refLink;
+ SwIntrnlSectRefLink *const pLnk =
+ static_cast<SwIntrnlSectRefLink*>(& m_RefLink);
- String sCmd( sLinkFileName );
+ String sCmd( m_Data.GetLinkFileName() );
xub_StrLen nPos;
while( STRING_NOTFOUND != (nPos = sCmd.SearchAscii( " " )) )
sCmd.Erase( nPos, 1 );
@@ -1620,7 +1777,7 @@ void SwSection::CreateLink( LinkCreateType eCreateType )
pLnk->SetUpdateMode( nUpdateType );
pLnk->SetVisible( pFmt->GetDoc()->IsVisibleLinks() );
- switch( eType )
+ switch (m_Data.GetType())
{
case DDE_LINK_SECTION:
pLnk->SetLinkSourceName( sCmd );
@@ -1632,7 +1789,7 @@ void SwSection::CreateLink( LinkCreateType eCreateType )
String sFltr( sCmd.GetToken( 1, sfx2::cTokenSeperator ) );
String sRange( sCmd.GetToken( 2, sfx2::cTokenSeperator ) );
pFmt->GetDoc()->GetLinkManager().InsertFileLink( *pLnk,
- static_cast<USHORT>(eType),
+ static_cast<USHORT>(m_Data.GetType()),
sCmd.GetToken( 0, sfx2::cTokenSeperator ),
( sFltr.Len() ? &sFltr : 0 ),
( sRange.Len() ? &sRange : 0 ) );
@@ -1668,19 +1825,21 @@ void SwSection::BreakLink()
}
// release link, if it exists
- if ( refLink.Is() )
+ if (m_RefLink.Is())
{
- if ( GetFmt() )
+ SwSectionFmt *const pFormat( GetFmt() );
+ ASSERT(pFormat, "SwSection::BreakLink: no format?");
+ if (pFormat)
{
- GetFmt()->GetDoc()->GetLinkManager().Remove( refLink );
+ pFormat->GetDoc()->GetLinkManager().Remove( m_RefLink );
}
- refLink.Clear();
+ m_RefLink.Clear();
}
// change type
SetType( CONTENT_SECTION );
// reset linked file data
SetLinkFileName( aEmptyStr );
- SetLinkFilePassWd( aEmptyStr );
+ SetLinkFilePassword( aEmptyStr );
}
// <--
diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx
index 96f15ba22be8..f7242d1d8132 100644
--- a/sw/source/core/draw/dview.cxx
+++ b/sw/source/core/draw/dview.cxx
@@ -1004,10 +1004,6 @@ void SwDrawView::CheckPossibilities()
}
if ( pFrm )
bProtect = pFrm->IsProtected(); //Rahmen, Bereiche usw.
- // --> OD 2006-11-06 #130889# - make code robust
-// if ( FLY_IN_CNTNT == ::FindFrmFmt( (SdrObject*)pObj )->GetAnchor().GetAnchorId() &&
-// rMrkList.GetMarkCount() > 1 )
-// bProtect = TRUE;
{
SwFrmFmt* pFrmFmt( ::FindFrmFmt( const_cast<SdrObject*>(pObj) ) );
if ( !pFrmFmt )
@@ -1022,7 +1018,6 @@ void SwDrawView::CheckPossibilities()
bProtect = TRUE;
}
}
- // <--
}
bMoveProtect |= bProtect;
bResizeProtect |= bProtect | bSzProtect;
diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx
index 9e1cf28f0eb1..37ba5e5ced31 100644
--- a/sw/source/core/edit/edattr.cxx
+++ b/sw/source/core/edit/edattr.cxx
@@ -31,14 +31,10 @@
#include <hintids.hxx>
-#ifndef _SVX_TSTPITEM_HXX //autogen
#include <editeng/tstpitem.hxx>
-#endif
#include <editeng/lrspitem.hxx>
#include <editeng/scripttypeitem.hxx>
-#ifndef _COM_SUN_STAR_I18N_SCRIPTTYPE_HDL_
#include <com/sun/star/i18n/ScriptType.hdl>
-#endif
#include <txatbase.hxx>
#include <txtftn.hxx>
#include <fmtftn.hxx>
@@ -230,8 +226,8 @@ BOOL SwEditShell::GetCurFtn( SwFmtFtn* pFillFtn )
if( !pTxtNd )
return FALSE;
- SwTxtAttr *pFtn = pTxtNd->GetTxtAttr( pCrsr->GetPoint()->nContent,
- RES_TXTATR_FTN );
+ SwTxtAttr *const pFtn = pTxtNd->GetTxtAttrForCharAt(
+ pCrsr->GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN);
if( pFtn && pFillFtn )
{
// Daten vom Attribut uebertragen
diff --git a/sw/source/core/edit/edglbldc.cxx b/sw/source/core/edit/edglbldc.cxx
index 5ecc92e79acb..6f884f244326 100644
--- a/sw/source/core/edit/edglbldc.cxx
+++ b/sw/source/core/edit/edglbldc.cxx
@@ -146,7 +146,7 @@ USHORT SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const
}
BOOL SwEditShell::InsertGlobalDocContent( const SwGlblDocContent& rInsPos,
- const SwSection& rNew )
+ SwSectionData & rNew)
{
if( !getIDocumentSettingAccess()->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) )
return FALSE;
diff --git a/sw/source/core/edit/edsect.cxx b/sw/source/core/edit/edsect.cxx
index 6ad8337e063a..ba3c2e9c7966 100644
--- a/sw/source/core/edit/edsect.cxx
+++ b/sw/source/core/edit/edsect.cxx
@@ -42,9 +42,9 @@
#include <rootfrm.hxx> // SwRootFrm
- // SS fuer Bereiche
-const SwSection* SwEditShell::InsertSection( const SwSection& rNew,
- const SfxItemSet* pAttr )
+SwSection const*
+SwEditShell::InsertSection(
+ SwSectionData & rNewData, SfxItemSet const*const pAttr)
{
const SwSection* pRet = 0;
if( !IsTableMode() )
@@ -53,8 +53,8 @@ const SwSection* SwEditShell::InsertSection( const SwSection& rNew,
GetDoc()->StartUndo( UNDO_INSSECTION, NULL );
FOREACHPAM_START(this)
- const SwSection* const pNew =
- GetDoc()->InsertSwSection( *PCURCRSR, rNew, pAttr );
+ SwSection const*const pNew =
+ GetDoc()->InsertSwSection( *PCURCRSR, rNewData, 0, pAttr );
if( !pRet )
pRet = pNew;
FOREACHPAM_END()
@@ -178,11 +178,11 @@ void SwEditShell::DelSectionFmt( USHORT nFmt )
}
-void SwEditShell::ChgSection( USHORT nSect, const SwSection& rSect,
- const SfxItemSet* pAttr )
+void SwEditShell::UpdateSection(sal_uInt16 const nSect,
+ SwSectionData & rNewData, SfxItemSet const*const pAttr)
{
StartAllAction();
- GetDoc()->ChgSection( nSect, rSect, pAttr );
+ GetDoc()->UpdateSection( nSect, rNewData, pAttr );
// rufe das AttrChangeNotify auf der UI-Seite.
CallChgLnk();
EndAllAction();
diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx
index d6fb64577e11..230e45f71079 100644
--- a/sw/source/core/edit/edtox.cxx
+++ b/sw/source/core/edit/edtox.cxx
@@ -135,10 +135,9 @@ void SwEditShell::SetTOXBaseReadonly(const SwTOXBase& rTOXBase, BOOL bReadonly)
((SwTOXBase&)rTOXBase).SetProtected(bReadonly);
ASSERT( rTOXSect.SwSection::GetType() == TOX_CONTENT_SECTION, "not a TOXContentSection" );
- SwSection aSect(TOX_CONTENT_SECTION, rTOXSect.GetName());
- aSect = rTOXSect;
- aSect.SetProtect(bReadonly);
- ChgSection( GetSectionFmtPos( *rTOXSect.GetFmt() ), aSect, 0 );
+ SwSectionData aSectionData(rTOXSect);
+ aSectionData.SetProtectFlag(bReadonly);
+ UpdateSection( GetSectionFmtPos( *rTOXSect.GetFmt() ), aSectionData, 0 );
}
/* -----------------02.09.99 07:47-------------------
diff --git a/sw/source/core/fields/postithelper.cxx b/sw/source/core/fields/postithelper.cxx
index 964a5a11cce4..0c9f8f2980bf 100644
--- a/sw/source/core/fields/postithelper.cxx
+++ b/sw/source/core/fields/postithelper.cxx
@@ -32,7 +32,8 @@
#include <postithelper.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
+#include <AnnotationWin.hxx>
+
#include <fmtfld.hxx>
#include <txtfld.hxx>
#include <docufld.hxx>
@@ -41,12 +42,50 @@
#include <pagefrm.hxx>
#include <rootfrm.hxx>
#include <txtfrm.hxx>
+#include <tabfrm.hxx>
#include <IDocumentRedlineAccess.hxx>
#include <redline.hxx>
#include <scriptinfo.hxx>
#include <editeng/charhiddenitem.hxx>
+namespace {
+
+struct LayoutInfoOrder
+{
+ bool operator()( const SwLayoutInfo& rLayoutInfo,
+ const SwLayoutInfo& rNewLayoutInfo )
+ {
+ if ( rLayoutInfo.mnPageNumber != rNewLayoutInfo.mnPageNumber )
+ {
+ // corresponding <SwFrm> instances are on different pages
+ return rLayoutInfo.mnPageNumber < rNewLayoutInfo.mnPageNumber;
+ }
+ else
+ {
+ // corresponding <SwFrm> instances are in different repeating table header rows
+ ASSERT( rLayoutInfo.mpAnchorFrm->FindTabFrm(),
+ "<LayoutInfoOrder::operator()> - table frame not found" );
+ ASSERT( rNewLayoutInfo.mpAnchorFrm->FindTabFrm(),
+ "<LayoutInfoOrder::operator()> - table frame not found" );
+ const SwTabFrm* pLayoutInfoTabFrm( rLayoutInfo.mpAnchorFrm->FindTabFrm() );
+ const SwTabFrm* pNewLayoutInfoTabFrm( rNewLayoutInfo.mpAnchorFrm->FindTabFrm() );
+ const SwTabFrm* pTmpTabFrm( pNewLayoutInfoTabFrm );
+ while ( pTmpTabFrm && pTmpTabFrm->GetFollow() )
+ {
+ pTmpTabFrm = static_cast<const SwTabFrm*>(pTmpTabFrm->GetFollow()->GetFrm());
+ if ( pTmpTabFrm == pLayoutInfoTabFrm )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+};
+
+} // eof anonymous namespace
+
SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLayoutInfo >& rInfo, SwPosition& rPos )
{
SwLayoutStatus aRet = INVISIBLE;
@@ -67,11 +106,12 @@ SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLa
{
SwLayoutInfo aInfo;
pTxtFrm->GetCharRect( aInfo.mPosition, rPos, 0 );
+ aInfo.mpAnchorFrm = pTxtFrm;
aInfo.mPageFrame = pPage->Frm();
aInfo.mPagePrtArea = pPage->Prt();
aInfo.mPagePrtArea.Pos() += aInfo.mPageFrame.Pos();
aInfo.mnPageNumber = pPage->GetPhyPageNum();
- aInfo.mbMarginSide = pPage->MarginSide();
+ aInfo.meSidebarPosition = pPage->SidebarPosition();
aInfo.mRedlineAuthor = 0;
if( aRet == INVISIBLE )
@@ -91,7 +131,14 @@ SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLa
}
}
}
- rInfo.push_back( aInfo );
+
+ {
+ std::vector< SwLayoutInfo >::iterator aInsPosIter =
+ std::lower_bound( rInfo.begin(), rInfo.end(),
+ aInfo, LayoutInfoOrder() );
+
+ rInfo.insert( aInsPosIter, aInfo );
+ }
}
}
}
@@ -142,7 +189,7 @@ SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLa
return aRet;
}
-SwPosition SwPostItItem::GetPosition()
+SwPosition SwAnnotationItem::GetAnchorPosition() const
{
SwTxtFld* pFld = pFmtFld->GetTxtFld();
//if( pFld )
@@ -157,23 +204,30 @@ SwPosition SwPostItItem::GetPosition()
//}
}
-bool SwPostItItem::UseElement()
+bool SwAnnotationItem::UseElement()
{
return pFmtFld->IsFldInDoc();
}
-SwMarginWin* SwPostItItem::GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
+sw::sidebarwindows::SwSidebarWin* SwAnnotationItem::GetSidebarWindow(
+ SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits)
{
- return new SwPostIt(pParent,nBits,pFmtFld,aMgr,aBits);
+ return new sw::annotation::SwAnnotationWin( rEditWin, nBits,
+ aMgr, aBits,
+ *this,
+ pFmtFld );
}
/*
-SwPosition SwRedCommentItem::GetPosition()
+SwPosition SwRedCommentItem::GetAnchorPosition()
{
return *pRedline->Start();
}
-SwMarginWin* SwRedCommentItem::GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
+SwSidebarWin* SwRedCommentItem::GetSidebarWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
{
return new SwRedComment(pParent,nBits,aMgr,aBits,pRedline);
}
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index 4df81e2e188e..9fe5c9a22204 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -182,8 +182,9 @@ BOOL SwFEShell::Copy( SwDoc* pClpDoc, const String* pNewClpTxt )
// das kopierte TextAttribut wieder entfernt werden,
// sonst wird es als TextSelektion erkannt
const SwIndex& rIdx = pFlyFmt->GetAnchor().GetCntntAnchor()->nContent;
- SwTxtFlyCnt* pTxtFly = (SwTxtFlyCnt*)pTxtNd->GetTxtAttr(
- rIdx, RES_TXTATR_FLYCNT );
+ SwTxtFlyCnt *const pTxtFly = static_cast<SwTxtFlyCnt *>(
+ pTxtNd->GetTxtAttrForCharAt(
+ rIdx.GetIndex(), RES_TXTATR_FLYCNT));
if( pTxtFly )
{
((SwFmtFlyCnt&)pTxtFly->GetFlyCnt()).SetFlyFmt( 0 );
@@ -835,8 +836,8 @@ BOOL SwFEShell::Paste( SwDoc* pClpDoc, BOOL bIncludingPageFrames )
pClpDoc->CopyRange( rCopy, rInsPos, false );
{
aIndexBefore++;
- SwPaM aPaM(SwPosition(aIndexBefore, 0),
- SwPosition(rInsPos.nNode, 0));
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
aPaM.GetDoc()->MakeUniqueNumRules(aPaM);
}
}
@@ -1065,8 +1066,8 @@ BOOL SwFEShell::Paste( SwDoc* pClpDoc, BOOL bIncludingPageFrames )
{
aIndexBefore++;
- SwPaM aPaM(SwPosition(aIndexBefore, 0),
- SwPosition(rInsPos.nNode, 0));
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
aPaM.GetDoc()->MakeUniqueNumRules(aPaM);
}
diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx
index a0d9141778cb..0dc721a62f12 100644
--- a/sw/source/core/frmedt/fefly1.cxx
+++ b/sw/source/core/frmedt/fefly1.cxx
@@ -1801,11 +1801,6 @@ ObjCntType SwFEShell::GetObjCntType( const SdrObject& rObj ) const
else
eType = OBJCNT_FLY;
}
- // --> OD 2006-11-06 #130889# - make code robust
-// else if( pInvestigatedObj->ISA( SdrObjGroup ) &&
-// FLY_IN_CNTNT !=
-// ((SwDrawContact*)GetUserCall(pInvestigatedObj))->GetFmt()->GetAnchor().GetAnchorId() )
-// eType = OBJCNT_GROUPOBJ;
else if ( pInvestigatedObj->ISA( SdrObjGroup ) )
{
SwDrawContact* pDrawContact( dynamic_cast<SwDrawContact*>(GetUserCall( pInvestigatedObj ) ) );
@@ -1830,7 +1825,6 @@ ObjCntType SwFEShell::GetObjCntType( const SdrObject& rObj ) const
}
}
}
- // <--
else
eType = OBJCNT_SIMPLE;
return eType;
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 7242ca411616..190cb5ecdf36 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -2322,12 +2322,6 @@ bool SwFEShell::IsGroupAllowed() const
else
pUpGroup = pObj->GetUpGroup();
- // --> OD 2006-11-06 #130889# - make code robust
-// if ( bIsGroupAllowed &&
-// FLY_IN_CNTNT == ::FindFrmFmt( (SdrObject*)pObj )->GetAnchor().GetAnchorId() )
-// {
-// bIsGroupAllowed = false;
-// }
if ( bIsGroupAllowed )
{
SwFrmFmt* pFrmFmt( ::FindFrmFmt( const_cast<SdrObject*>(pObj) ) );
@@ -2342,7 +2336,6 @@ bool SwFEShell::IsGroupAllowed() const
bIsGroupAllowed = false;
}
}
- // <--
// OD 27.06.2003 #108784# - check, if all selected objects are in the
// same header/footer or not in header/footer.
diff --git a/sw/source/core/inc/cellfrm.hxx b/sw/source/core/inc/cellfrm.hxx
index f737cecafd65..fb479fc86549 100644
--- a/sw/source/core/inc/cellfrm.hxx
+++ b/sw/source/core/inc/cellfrm.hxx
@@ -51,6 +51,10 @@ public:
virtual void Paint( const SwRect&, const SwPrtOptions *pPrintData = NULL ) const;
virtual void CheckDirection( BOOL bVert );
+ // --> OD 2010-02-17 #i103961#
+ virtual void Cut();
+ // <--
+
const SwTableBox *GetTabBox() const { return pTabBox; }
// used for breaking table rows:
diff --git a/sw/source/core/inc/doctxm.hxx b/sw/source/core/inc/doctxm.hxx
index 1372a82dbb6e..cb03e0531000 100644
--- a/sw/source/core/inc/doctxm.hxx
+++ b/sw/source/core/inc/doctxm.hxx
@@ -96,7 +96,7 @@ class SwTOXBaseSection : public SwTOXBase, public SwSection
SwTxtFmtColl* GetTxtFmtColl( USHORT nLevel );
public:
- SwTOXBaseSection( const SwTOXBase& rBase );
+ SwTOXBaseSection(SwTOXBase const& rBase, SwSectionFmt & rFmt);
virtual ~SwTOXBaseSection();
// OD 19.03.2003 #106329# - add parameter <_bNewTOX> in order to distinguish
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index 35e2ad6853bb..bc2fef9b8be4 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -33,6 +33,8 @@
#include "ftnboss.hxx"
#include <tools/mempool.hxx>
+#include <SidebarWindowsTypes.hxx>
+
class SwFlyFrm;
class SwFlyFrmFmt;
class SwPageDesc;
@@ -383,7 +385,7 @@ public:
static void GetBorderAndShadowBoundRect( const SwRect& _rPageRect,
ViewShell* _pViewShell,
SwRect& _orBorderAndShadowBoundRect,
- bool bRightSidebar );
+ const bool bRightSidebar );
static void PaintNotesSidebar(const SwRect& _rPageRect, ViewShell* _pViewShell, USHORT nPageNum, bool bRight);
static void PaintNotesSidebarArrows(const Point &aMiddleFirst, const Point &aMiddleSecond, ViewShell* _pViewShell, const Color aColorUp, const Color aColorDown);
@@ -393,7 +395,7 @@ public:
asks the page on which side a margin should be shown, e.g for notes
returns true for left side, false for right side
*/
- bool MarginSide() const;
+ sw::sidebarwindows::SidebarPosition SidebarPosition() const;
virtual bool FillSelection( SwSelectionList& rList, const SwRect& rRect ) const;
diff --git a/sw/source/core/inc/unometa.hxx b/sw/source/core/inc/unometa.hxx
index 771be61acc12..1f5c74612a81 100755
--- a/sw/source/core/inc/unometa.hxx
+++ b/sw/source/core/inc/unometa.hxx
@@ -33,12 +33,13 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/text/XTextContent.hpp>
#include <com/sun/star/text/XTextField.hpp>
#include <cppuhelper/implbase2.hxx>
-#include <cppuhelper/implbase5.hxx>
+#include <cppuhelper/implbase6.hxx>
#include <sfx2/Metadatable.hxx>
@@ -57,10 +58,11 @@ namespace sw {
class MetaField;
}
-typedef ::cppu::ImplInheritanceHelper5
+typedef ::cppu::ImplInheritanceHelper6
< ::sfx2::MetadatableMixin
, ::com::sun::star::lang::XUnoTunnel
, ::com::sun::star::lang::XServiceInfo
+, ::com::sun::star::container::XChild
, ::com::sun::star::container::XEnumerationAccess
, ::com::sun::star::text::XTextContent
, ::com::sun::star::text::XText
@@ -151,6 +153,17 @@ public:
::com::sun::star::lang::XEventListener > & xListener)
throw (::com::sun::star::uno::RuntimeException);
+ // XChild
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface > SAL_CALL
+ getParent()
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setParent(
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface> const& xParent)
+ throw (::com::sun::star::uno::RuntimeException,
+ ::com::sun::star::lang::NoSupportException);
+
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw (::com::sun::star::uno::RuntimeException);
diff --git a/sw/source/core/inc/viewimp.hxx b/sw/source/core/inc/viewimp.hxx
index 38fb3e2bac7a..0f89b3b75663 100644
--- a/sw/source/core/inc/viewimp.hxx
+++ b/sw/source/core/inc/viewimp.hxx
@@ -35,8 +35,8 @@
#include <tools/string.hxx>
-#include "swtypes.hxx"
-#include "swrect.hxx"
+#include <swtypes.hxx>
+#include <swrect.hxx>
class ViewShell;
class SwFlyFrm;
@@ -54,17 +54,10 @@ class SwAccessibleMap;
class SdrObject;
class Fraction;
class SwPrtOptions;
-// OD 12.12.2002 #103492#
class SwPagePreviewLayout;
-// OD 15.01.2003 #103492#
-#ifndef _PREVWPAGE_HXX
-#include <prevwpage.hxx>
-#endif
-// OD 15.01.2003 #103492#
+struct PrevwPage;
#include <vector>
-// --> OD 2005-12-01 #i27138#
class SwTxtFrm;
-// <--
class SwViewImp
{
@@ -175,7 +168,7 @@ private:
*/
void _InvalidateAccessibleParaTextSelection();
- /** invalidate attributes for paragraphs
+ /** invalidate attributes for paragraphs and paragraph's characters
OD 2009-01-06 #i88069#
implementation for wrapper method
diff --git a/sw/source/core/inc/wrong.hxx b/sw/source/core/inc/wrong.hxx
index 5c16c1171397..2f8c8047c96e 100644
--- a/sw/source/core/inc/wrong.hxx
+++ b/sw/source/core/inc/wrong.hxx
@@ -57,7 +57,13 @@ public:
: maType(rType), mxPropertyBag(xPropertyBag), mnPos(nPos), mnLen(nLen), mpSubList(pSubList) {}
};
-enum WrongListType { WRONGLIST_SPELL, WRONGLIST_GRAMMAR, WRONGLIST_SMARTTAG };
+enum WrongListType
+{
+ WRONGLIST_SPELL,
+ WRONGLIST_GRAMMAR,
+ WRONGLIST_SMARTTAG,
+ WRONGLIST_CHANGETRACKING
+};
class SwWrongList
{
diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 14bc23bb97a4..1475a3909220 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -1460,15 +1460,23 @@ BOOL SwLayAction::FormatLayout( SwLayoutFrm *pLay, BOOL bAddRect )
//mod #i6193# added sidebar width
const SwPostItMgr* pPostItMgr = pImp->GetShell()->GetPostItMgr();
const int nSidebarWidth = pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() ? pPostItMgr->GetSidebarWidth() + pPostItMgr->GetSidebarBorderWidth() : 0;
- if (pPageFrm->MarginSide())
+ switch ( pPageFrm->SidebarPosition() )
{
- aPaint.Left( aPaint.Left() - nBorderWidth - nSidebarWidth);
- aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth);
- }
- else
- {
- aPaint.Left( aPaint.Left() - nBorderWidth );
- aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth + nSidebarWidth);
+ case sw::sidebarwindows::SIDEBAR_LEFT:
+ {
+ aPaint.Left( aPaint.Left() - nBorderWidth - nSidebarWidth);
+ aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth);
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_RIGHT:
+ {
+ aPaint.Left( aPaint.Left() - nBorderWidth );
+ aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth + nSidebarWidth);
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_NONE:
+ // nothing to do
+ break;
}
aPaint.Top( aPaint.Top() - nBorderWidth );
aPaint.Bottom( aPaint.Bottom() + nBorderWidth + nShadowWidth);
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index a2d32b3ab3bc..72976a786fa1 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -300,7 +300,7 @@ SwPageFrm::~SwPageFrm()
pImp->GetLayAction().SetAgain();
// OD 12.02.2003 #i9719#, #105645# - retouche area of page
// including border and shadow area.
- const bool bRightSidebar = !MarginSide();
+ const bool bRightSidebar = (SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
SwRect aRetoucheRect;
SwPageFrm::GetBorderAndShadowBoundRect( Frm(), pSh, aRetoucheRect, bRightSidebar );
pSh->AddPaintRect( aRetoucheRect );
@@ -655,7 +655,7 @@ void SwPageFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew,
{
// OD 12.02.2003 #i9719#, #105645# - consider border and shadow of
// page frame for determine 'old' rectangle - it's used for invalidating.
- const bool bRightSidebar = !MarginSide();
+ const bool bRightSidebar = (SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
SwRect aOldRectWithBorderAndShadow;
SwPageFrm::GetBorderAndShadowBoundRect( aOldPageFrmRect, pSh, aOldRectWithBorderAndShadow, bRightSidebar );
pSh->InvalidateWindows( aOldRectWithBorderAndShadow );
@@ -1386,17 +1386,19 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, BOOL bFtn )
}
// false = right, true = left
-bool SwPageFrm::MarginSide() const
+sw::sidebarwindows::SidebarPosition SwPageFrm::SidebarPosition() const
{
if (!GetShell() || GetShell()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE))
- return false;
+ return sw::sidebarwindows::SIDEBAR_NONE;
else
{
const bool bLTR = GetUpper() ? static_cast<const SwRootFrm*>(GetUpper())->IsLeftToRightViewLayout() : true;
const bool bBookMode = GetShell()->GetViewOptions()->IsViewLayoutBookMode();
const bool bRightSidebar = bLTR ? (!bBookMode || OnRightPage()) : (bBookMode && !OnRightPage());
- return !bRightSidebar;
+ return bRightSidebar
+ ? sw::sidebarwindows::SIDEBAR_RIGHT
+ : sw::sidebarwindows::SIDEBAR_LEFT;
}
}
@@ -2310,7 +2312,7 @@ void SwRootFrm::CheckViewLayout( const SwViewOption* pViewOpt, const SwRect* pVi
const SwTwips nCurrentPageWidth = pFormatPage->Frm().Width() + (pFormatPage->IsEmptyPage() ? 0 : nSidebarWidth);
const Point aOldPagePos = pPageToAdjust->Frm().Pos();
- const bool bLeftSidebar = pPageToAdjust->MarginSide();
+ const bool bLeftSidebar = pPageToAdjust->SidebarPosition() == sw::sidebarwindows::SIDEBAR_LEFT;
const SwTwips nLeftPageAddOffset = bLeftSidebar ?
nSidebarWidth :
0;
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index ee9671ac869f..09fc6b00e03d 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -2838,7 +2838,7 @@ void SwRootFrm::Paint( const SwRect& rRect, const SwPrtOptions *pPrintData ) con
// <--
{
const bool bPaintRightShadow = !bBookMode || (pPage == Lower()) || (!bLTR && !pPage->OnRightPage()) || (bLTR && pPage->OnRightPage());
- const bool bRightSidebar = !pPage->MarginSide();
+ const bool bRightSidebar = pPage->SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT;
if ( !pPage->IsEmptyPage() )
{
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index c3bccc695934..f912be5cb9b1 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -4773,6 +4773,30 @@ void SwRowFrm::Cut()
{
pTab->FindMaster()->InvalidatePos();
}
+
+ // --> OD 2010-02-17 #i103961#
+ // notification for accessibility
+ {
+ SwRootFrm *pRootFrm = FindRootFrm();
+ if( pRootFrm && pRootFrm->IsAnyShellAccessible() )
+ {
+ ViewShell* pVSh = pRootFrm->GetCurrShell();
+ if ( pVSh && pVSh->Imp() )
+ {
+ SwFrm* pCellFrm( GetLower() );
+ while ( pCellFrm )
+ {
+ ASSERT( pCellFrm->IsCellFrm(),
+ "<SwRowFrm::Cut()> - unexpected type of SwRowFrm lower." );
+ pVSh->Imp()->DisposeAccessibleFrm( pCellFrm );
+
+ pCellFrm = pCellFrm->GetNext();
+ }
+ }
+ }
+ }
+ // <--
+
SwLayoutFrm::Cut();
}
@@ -5652,15 +5676,25 @@ long SwCellFrm::GetLayoutRowSpan() const
return nRet;
}
-/*************************************************************************
-|*
-|* SwCellFrm::Modify()
-|*
-|* Ersterstellung MA 20. Dec. 96
-|* Letzte Aenderung MA 20. Dec. 96
-|*
-|*************************************************************************/
+// --> OD 2010-02-17 #i103961#
+void SwCellFrm::Cut()
+{
+ // notification for accessibility
+ {
+ SwRootFrm *pRootFrm = FindRootFrm();
+ if( pRootFrm && pRootFrm->IsAnyShellAccessible() )
+ {
+ ViewShell* pVSh = pRootFrm->GetCurrShell();
+ if ( pVSh && pVSh->Imp() )
+ {
+ pVSh->Imp()->DisposeAccessibleFrm( this );
+ }
+ }
+ }
+ SwLayoutFrm::Cut();
+}
+// <--
//
// Helper functions for repeated headlines:
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 5aff2f71b0d5..ade3efd4e70d 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -768,28 +768,6 @@ void SwFrm::Remove()
{
ASSERT( pUpper, "Removen ohne Upper?" );
- // --> OD 2004-09-27 #114344# - inform accessibility API - dispose table the
- // frame is in - before frame is 'removed from the layout' and
- // only for cell frames and row frames.
- if ( IsInTab() && ( IsRowFrm() || IsCellFrm() ) )
- {
- SwTabFrm* pTableFrm = FindTabFrm();
- if( pTableFrm != NULL &&
- pTableFrm->IsAccessibleFrm() &&
- pTableFrm->GetFmt() != NULL )
- {
- SwRootFrm *pRootFrm = pTableFrm->FindRootFrm();
- if( pRootFrm != NULL &&
- pRootFrm->IsAnyShellAccessible() )
- {
- ViewShell* pShell = pRootFrm->GetCurrShell();
- if( pShell != NULL )
- pShell->Imp()->DisposeAccessibleFrm( pTableFrm, sal_True );
- }
- }
- }
- // <--
-
if( pPrev )
// einer aus der Mitte wird removed
pPrev->pNext = pNext;
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 697e99c96299..09c13b8fb250 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -1392,14 +1392,17 @@ void SwTaggedPDFHelper::BeginInlineStructureElements()
case POR_PARA :
{
SwTxtNode* pNd = (SwTxtNode*)pFrm->GetTxtNode();
- SwIndex aIndex( pNd, rInf.GetIdx() );
- const SwTxtAttr* pInetFmtAttr = pNd->GetTxtAttr( aIndex, RES_TXTATR_INETFMT );
+ SwTxtAttr const*const pInetFmtAttr =
+ pNd->GetTxtAttrAt(rInf.GetIdx(), RES_TXTATR_INETFMT);
String sStyleName;
if ( !pInetFmtAttr )
{
- const SwTxtAttr* pCharFmtAttr = pNd->GetTxtAttr( aIndex, RES_TXTATR_CHARFMT );
- const SwCharFmt* pCharFmt = pCharFmtAttr ? pCharFmtAttr->GetCharFmt().GetCharFmt() : 0;
+ ::std::vector<SwTxtAttr *> const charAttrs(
+ pNd->GetTxtAttrsAt(rInf.GetIdx(), RES_TXTATR_CHARFMT));
+ // TODO: handle more than 1 char style?
+ const SwCharFmt* pCharFmt = (charAttrs.size())
+ ? (*charAttrs.begin())->GetCharFmt().GetCharFmt() : 0;
if ( pCharFmt )
SwStyleNameMapper::FillProgName( pCharFmt->GetName(), sStyleName, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, sal_True );
}
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 7687a71309ac..ffcf4b53afbd 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -77,7 +77,7 @@
#include <doc.hxx>
#include <pam.hxx>
#include <SwGrammarMarkUp.hxx>
-
+#include <cstdio>
// --> FME 2004-06-08 #i12836# enhanced pdf export
#include <EnhancedPDFExportHelper.hxx>
// <--
@@ -1325,8 +1325,8 @@ void SwTxtPaintInfo::_NotifyURL( const SwLinePortion &rPor ) const
if( aIntersect.HasArea() )
{
SwTxtNode *pNd = (SwTxtNode*)GetTxtFrm()->GetTxtNode();
- SwIndex aIndex( pNd, GetIdx() );
- SwTxtAttr *pAttr = pNd->GetTxtAttr( aIndex, RES_TXTATR_INETFMT );
+ SwTxtAttr *const pAttr =
+ pNd->GetTxtAttrAt(GetIdx(), RES_TXTATR_INETFMT);
if( pAttr )
{
const SwFmtINetFmt& rFmt = pAttr->GetINetFmt();
diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx
index 6c48aeeb181d..db245de1e28b 100644
--- a/sw/source/core/text/txtfly.cxx
+++ b/sw/source/core/text/txtfly.cxx
@@ -2341,84 +2341,6 @@ SwRect SwTxtFly::AnchoredObjToRect( const SwAnchoredObject* pAnchoredObj,
// Beidseitiger Umfluss bis zu einer Rahmenbreite von maximal 1,5 cm
#define FRAME_MAX 850
-//_FlyCntnt SwTxtFly::CalcSmart( const SdrObject *pObj ) const
-//{
-// _FlyCntnt eOrder;
-
-// // 11839: Nur die X-Positionen sind interessant, die Y-Positionen des
-// // CurrentFrames koennen sich noch aendern (wachsen).
-
-// SWRECTFN( pCurrFrm )
-// const long nCurrLeft = (pCurrFrm->*fnRect->fnGetPrtLeft)();
-// const long nCurrRight = (pCurrFrm->*fnRect->fnGetPrtRight)();
-// const SwRect aRect( GetBoundRect( pObj ) );
-// long nFlyLeft = (aRect.*fnRect->fnGetLeft)();
-// long nFlyRight = (aRect.*fnRect->fnGetRight)();
-
-// if ( nFlyRight < nCurrLeft || nFlyLeft > nCurrRight )
-// eOrder = SURROUND_PARALLEL;
-// else
-// {
-// long nLeft = nFlyLeft - nCurrLeft;
-// long nRight = nCurrRight - nFlyRight;
-// if( nFlyRight - nFlyLeft > FRAME_MAX )
-// {
-// if( nLeft < nRight )
-// nLeft = 0;
-// else
-// nRight = 0;
-// }
-// if( nLeft < TEXT_MIN )
-// nLeft = 0;
-// if( nRight < TEXT_MIN )
-// nRight = 0;
-// if( nLeft )
-// eOrder = nRight ? SURROUND_PARALLEL : SURROUND_LEFT;
-// else
-// eOrder = nRight ? SURROUND_RIGHT: SURROUND_NONE;
-// }
-
-// return eOrder;
-//}
-
-/*************************************************************************
- * SwTxtFly::GetOrder()
- *************************************************************************/
-
-//_FlyCntnt SwTxtFly::GetOrder( const SdrObject *pObj ) const
-//{
-// const SwFrmFmt *pFmt = ((SwContact*)GetUserCall(pObj))->GetFmt();
-// const SwFmtSurround &rFlyFmt = pFmt->GetSurround();
-// _FlyCntnt eOrder = rFlyFmt.GetSurround();
-
-// if( rFlyFmt.IsAnchorOnly() && &lcl_TheAnchor( pObj ) != GetMaster() )
-// {
-// const SwFmtAnchor& rAnchor = pFmt->GetAnchor();
-// if( FLY_AT_CNTNT == rAnchor.GetAnchorId() ||
-// FLY_AUTO_CNTNT == rAnchor.GetAnchorId() )
-// return SURROUND_NONE;
-// }
-
-// Beim Durchlauf und Nowrap wird smart ignoriert.
-// if( SURROUND_THROUGHT == eOrder || SURROUND_NONE == eOrder )
-// return eOrder;
-
-// left is left and right is right
-// if ( pCurrFrm->IsRightToLeft() )
-// {
-// if ( SURROUND_LEFT == eOrder )
-// eOrder = SURROUND_RIGHT;
-// else if ( SURROUND_RIGHT == eOrder )
-// eOrder = SURROUND_LEFT;
-// }
-
-// "idealer Seitenumlauf":
-// if( SURROUND_IDEAL == eOrder )
-// eOrder = CalcSmart( pObj ); //Bei SMART wird die Order automatisch berechnet:
-
-// return eOrder;
-//}
-
SwSurround SwTxtFly::_GetSurroundForTextWrap( const SwAnchoredObject* pAnchoredObj ) const
{
const SwFrmFmt* pFmt = &(pAnchoredObj->GetFrmFmt());
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 16fbc589c16d..0861f98b2ddf 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -1026,6 +1026,13 @@ void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew )
SET_SCRIPT_INVAL( nPos )
}
}
+
+ // --> OD 2010-02-16 #i104008#
+ if ( GetShell() )
+ {
+ GetShell()->InvalidateAccessibleParaAttrs( *this );
+ }
+ // <--
}
break;
case RES_OBJECTDYING:
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx
index d6770321768f..798d7e41602f 100644
--- a/sw/source/core/txtnode/ndtxt.cxx
+++ b/sw/source/core/txtnode/ndtxt.cxx
@@ -1196,60 +1196,109 @@ BOOL SwTxtNode::DontExpandFmt( const SwIndex& rIdx, bool bFlag,
return bRet;
}
+static bool lcl_GetTxtAttrDefault(xub_StrLen const nIndex,
+ xub_StrLen const nHintStart, xub_StrLen const nHintEnd)
+{
+ return ((nHintStart <= nIndex) && (nIndex < nHintEnd));
+}
+static bool lcl_GetTxtAttrExpand(xub_StrLen const nIndex,
+ xub_StrLen const nHintStart, xub_StrLen const nHintEnd)
+{
+ return ((nHintStart < nIndex) && (nIndex <= nHintEnd));
+}
+static bool lcl_GetTxtAttrParent(xub_StrLen const nIndex,
+ xub_StrLen const nHintStart, xub_StrLen const nHintEnd)
+{
+ return ((nHintStart < nIndex) && (nIndex < nHintEnd));
+}
-// gebe das vorgegebene Attribut, welches an der TextPosition (rIdx)
-// gesetzt ist, zurueck. Gibt es keines, returne 0-Pointer.
-// (gesetzt heisst, je nach bExpand ?
-// Start < rIdx <= End
-// : Start <= rIdx < End )
-
-SwTxtAttr* SwTxtNode::GetTxtAttr( const SwIndex& rIdx, USHORT nWhichHt,
- BOOL bExpand ) const
+static void
+lcl_GetTxtAttrs(
+ ::std::vector<SwTxtAttr *> *const pVector, SwTxtAttr **const ppTxtAttr,
+ SwpHints *const pSwpHints,
+ xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum SwTxtNode::GetTxtAttrMode const eMode)
{
- const SwTxtAttr* pRet = 0;
- const SwTxtAttr* pHt = 0;
- const xub_StrLen *pEndIdx = 0;
- const xub_StrLen nIdx = rIdx.GetIndex();
- const USHORT nSize = m_pSwpHints ? m_pSwpHints->Count() : 0;
+ USHORT const nSize = (pSwpHints) ? pSwpHints->Count() : 0;
+ xub_StrLen nPreviousIndex(0); // index of last hint with nWhich
+ bool (*pMatchFunc)(xub_StrLen const, xub_StrLen const, xub_StrLen const)=0;
+ switch (eMode)
+ {
+ case SwTxtNode::DEFAULT: pMatchFunc = &lcl_GetTxtAttrDefault; break;
+ case SwTxtNode::EXPAND: pMatchFunc = &lcl_GetTxtAttrExpand; break;
+ case SwTxtNode::PARENT: pMatchFunc = &lcl_GetTxtAttrParent; break;
+ default: OSL_ASSERT(false);
+ }
for( USHORT i = 0; i < nSize; ++i )
{
- // ist der Attribut-Anfang schon groesser als der Idx ?
- pHt = (*m_pSwpHints)[i];
- if ( nIdx < *(pHt->GetStart()) )
- break; // beenden, kein gueltiges Attribut
-
- // ist es das gewuenschte Attribut ?
- if( pHt->Which() != nWhichHt )
- continue; // nein, weiter
-
- pEndIdx = pHt->GetEnd();
- // liegt innerhalb des Bereiches ??
- if( !pEndIdx )
+ SwTxtAttr *const pHint = pSwpHints->GetTextHint(i);
+ xub_StrLen const nHintStart( *(pHint->GetStart()) );
+ if (nIndex < nHintStart)
{
- if( *pHt->GetStart() == nIdx )
- {
- pRet = pHt;
- break;
- }
+ return; // hints are sorted by start, so we are done...
}
- else if( *pHt->GetStart() <= nIdx && nIdx <= *pEndIdx )
+
+ if (pHint->Which() != nWhich)
{
+ continue;
+ }
+
+ xub_StrLen const*const pEndIdx = pHint->GetEnd();
+ ASSERT(pEndIdx || pHint->HasDummyChar(),
+ "hint with no end and no dummy char?");
// Wenn bExpand gesetzt ist, wird das Verhalten bei Eingabe
// simuliert, d.h. der Start wuede verschoben, das Ende expandiert,
- if( bExpand )
+ bool const bContained( (pEndIdx)
+ ? (*pMatchFunc)(nIndex, nHintStart, *pEndIdx)
+ : (nHintStart == nIndex) );
+ if (bContained)
+ {
+ if (pVector)
{
- if( *pHt->GetStart() < nIdx )
- pRet = pHt;
+ if (nPreviousIndex < nHintStart)
+ {
+ pVector->clear(); // clear hints that are outside pHint
+ nPreviousIndex = nHintStart;
+ }
+ pVector->push_back(pHint);
}
else
{
- if( nIdx < *pEndIdx )
- pRet = pHt; // den am dichtesten liegenden
+ *ppTxtAttr = pHint; // and possibly overwrite outer hint
+ }
+ if (!pEndIdx)
+ {
+ break;
}
}
}
- return (SwTxtAttr*)pRet; // kein gueltiges Attribut gefunden !!
+}
+
+::std::vector<SwTxtAttr *>
+SwTxtNode::GetTxtAttrsAt(xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode) const
+{
+ ::std::vector<SwTxtAttr *> ret;
+ lcl_GetTxtAttrs(& ret, 0, m_pSwpHints, nIndex, nWhich, eMode);
+ return ret;
+}
+
+SwTxtAttr *
+SwTxtNode::GetTxtAttrAt(xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode) const
+{
+ ASSERT( (nWhich == RES_TXTATR_META)
+ || (nWhich == RES_TXTATR_METAFIELD)
+ || (nWhich == RES_TXTATR_AUTOFMT)
+ || (nWhich == RES_TXTATR_INETFMT)
+ || (nWhich == RES_TXTATR_CJK_RUBY)
+ || (nWhich == RES_TXTATR_UNKNOWN_CONTAINER),
+ "GetTxtAttrAt() will give wrong result for this hint!");
+
+ SwTxtAttr * pRet(0);
+ lcl_GetTxtAttrs(0, & pRet, m_pSwpHints, nIndex, nWhich, eMode);
+ return pRet;
}
/*************************************************************************
diff --git a/sw/source/core/undo/rolbck.cxx b/sw/source/core/undo/rolbck.cxx
index aae0b8de10ac..6df9f9aa24b8 100644
--- a/sw/source/core/undo/rolbck.cxx
+++ b/sw/source/core/undo/rolbck.cxx
@@ -614,9 +614,8 @@ SwHistoryBookmark::SwHistoryBookmark(
m_aKeycode = pBookmark->GetKeyCode();
m_aShortName = pBookmark->GetShortName();
- ::sfx2::Metadatable * const pMetadatable(
- const_cast< ::sfx2::Metadatable * >( // CreateUndo should be const?
- dynamic_cast< ::sfx2::Metadatable const* >(pBookmark)));
+ ::sfx2::Metadatable const*const pMetadatable(
+ dynamic_cast< ::sfx2::Metadatable const* >(pBookmark));
if (pMetadatable)
{
m_pMetadataUndo = pMetadatable->CreateUndo();
diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx
index dd44a981d1d4..e3b54c59b142 100644
--- a/sw/source/core/undo/unattr.cxx
+++ b/sw/source/core/undo/unattr.cxx
@@ -1055,8 +1055,8 @@ void SwUndoAttr::RemoveIdx( SwDoc& rDoc )
SwTxtNode* pTxtNd = rNds[ nNode ]->GetTxtNode();
if( pTxtNd )
{
- SwIndex aIdx( pTxtNd, nCntnt );
- SwTxtAttr * pTxtHt = pTxtNd->GetTxtAttr( aIdx, RES_TXTATR_FTN );
+ SwTxtAttr *const pTxtHt =
+ pTxtNd->GetTxtAttrForCharAt(nCntnt, RES_TXTATR_FTN);
if( pTxtHt )
{
// ok, dann hole mal die Werte
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index 593382fd999e..347a70190006 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -391,7 +391,9 @@ BOOL SwUndoDelete::SaveCntnt( const SwPosition* pStt, const SwPosition* pEnd,
bool emptied( pSttStr->Len() && !pSttTxtNd->Len() );
if (!bOneNode || emptied) // merging may overwrite xmlids...
{
- m_pMetadataUndoStart = pSttTxtNd->CreateUndo( emptied );
+ m_pMetadataUndoStart = (emptied)
+ ? pSttTxtNd->CreateUndoForDelete()
+ : pSttTxtNd->CreateUndo();
}
if( bOneNode )
@@ -425,7 +427,10 @@ BOOL SwUndoDelete::SaveCntnt( const SwPosition* pStt, const SwPosition* pEnd,
// METADATA: store
bool emptied( pEndStr->Len() && !pEndTxtNd->Len() );
- m_pMetadataUndoEnd = pEndTxtNd->CreateUndo( emptied );
+
+ m_pMetadataUndoEnd = (emptied)
+ ? pEndTxtNd->CreateUndoForDelete()
+ : pEndTxtNd->CreateUndo();
}
// sind es nur zwei Nodes, dann ist schon alles erledigt.
diff --git a/sw/source/core/undo/unsect.cxx b/sw/source/core/undo/unsect.cxx
index 9f5687a8edce..98d0e41d4616 100644
--- a/sw/source/core/undo/unsect.cxx
+++ b/sw/source/core/undo/unsect.cxx
@@ -74,34 +74,31 @@ SfxItemSet* lcl_GetAttrSet( const SwSection& rSect )
return pAttr;
}
-SwUndoInsSection::SwUndoInsSection( const SwPaM& rPam, const SwSection& rNew,
- const SfxItemSet* pSet )
- : SwUndo( UNDO_INSSECTION ), SwUndRng( rPam ),
- pHistory( 0 ), pRedlData( 0 ), pAttr( 0 ), nSectNodePos( 0 )
-{
- if( rNew.ISA( SwTOXBaseSection ))
- {
- const SwTOXBase& rBase = (SwTOXBaseSection&)rNew;
- pSection = new SwTOXBaseSection( rBase );
- }
- else
- pSection = new SwSection( rNew.GetType(), rNew.GetName() );
- *pSection = rNew;
+////////////////////////////////////////////////////////////////////////////
+
+SwUndoInsSection::SwUndoInsSection(
+ SwPaM const& rPam, SwSectionData const& rNewData,
+ SfxItemSet const*const pSet, SwTOXBase const*const pTOXBase)
+ : SwUndo( UNDO_INSSECTION ), SwUndRng( rPam )
+ , m_pSectionData(new SwSectionData(rNewData))
+ , m_pTOXBase( (pTOXBase) ? new SwTOXBase(*pTOXBase) : 0 )
+ , m_pAttrSet( (pSet && pSet->Count()) ? new SfxItemSet( *pSet ) : 0 )
+ , m_pHistory(0)
+ , m_pRedlData(0)
+ , m_nSectionNodePos(0)
+ , m_bSplitAtStart(false)
+ , m_bSplitAtEnd(false)
+ , m_bUpdateFtn(false)
+{
SwDoc& rDoc = *(SwDoc*)rPam.GetDoc();
if( rDoc.IsRedlineOn() )
{
- pRedlData = new SwRedlineData( nsRedlineType_t::REDLINE_INSERT,
- rDoc.GetRedlineAuthor() );
+ m_pRedlData.reset(new SwRedlineData( nsRedlineType_t::REDLINE_INSERT,
+ rDoc.GetRedlineAuthor() ));
SetRedlineMode( rDoc.GetRedlineMode() );
}
- bSplitAtStt = FALSE;
- bSplitAtEnd = FALSE;
- bUpdateFtn = FALSE;
-
- if( pSet && pSet->Count() )
- pAttr = new SfxItemSet( *pSet );
if( !rPam.HasMark() )
{
@@ -114,33 +111,25 @@ SwUndoInsSection::SwUndoInsSection( const SwPaM& rPam, const SwSection& rNew,
aBrkSet.Put( *pCNd->GetpSwAttrSet() );
if( aBrkSet.Count() )
{
- pHistory = new SwHistory;
- pHistory->CopyFmtAttr( aBrkSet, pCNd->GetIndex() );
+ m_pHistory.reset( new SwHistory );
+ m_pHistory->CopyFmtAttr( aBrkSet, pCNd->GetIndex() );
}
}
}
}
-
SwUndoInsSection::~SwUndoInsSection()
{
- delete pSection;
- delete pRedlData;
- delete pAttr;
-
- if( pHistory )
- delete pHistory;
}
-
-
void SwUndoInsSection::Undo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- RemoveIdxFromSection( rDoc, nSectNodePos );
+ RemoveIdxFromSection( rDoc, m_nSectionNodePos );
- SwSectionNode* pNd = rDoc.GetNodes()[ nSectNodePos ]->GetSectionNode();
+ SwSectionNode *const pNd =
+ rDoc.GetNodes()[ m_nSectionNodePos ]->GetSectionNode();
ASSERT( pNd, "wo ist mein SectionNode?" );
if( IDocumentRedlineAccess::IsRedlineOn( GetRedlineMode() ))
@@ -158,19 +147,25 @@ void SwUndoInsSection::Undo( SwUndoIter& rUndoIter )
rDoc.DelSectionFmt( pNd->GetSection().GetFmt() );
// muessen wir noch zusammenfassen ?
- if( bSplitAtStt )
+ if (m_bSplitAtStart)
+ {
Join( rDoc, nSttNode );
+ }
- if( bSplitAtEnd )
+ if (m_bSplitAtEnd)
+ {
Join( rDoc, nEndNode );
+ }
- if ( pHistory )
+ if (m_pHistory.get())
{
- pHistory->TmpRollback( &rDoc, 0, false );
+ m_pHistory->TmpRollback( &rDoc, 0, false );
}
- if( bUpdateFtn )
+ if (m_bUpdateFtn)
+ {
rDoc.GetFtnIdxs().UpdateFtn( aIdx );
+ }
SetPaM( rUndoIter );
}
@@ -182,28 +177,32 @@ void SwUndoInsSection::Redo( SwUndoIter& rUndoIter )
SetPaM( rUndoIter );
const SwTOXBaseSection* pUpdateTOX = 0;
- if( pSection->ISA( SwTOXBaseSection ))
+ if (m_pTOXBase.get())
{
- const SwTOXBase& rBase = *(SwTOXBaseSection*)pSection;
pUpdateTOX = rDoc.InsertTableOf( *rUndoIter.pAktPam->GetPoint(),
- rBase, pAttr, TRUE );
+ *m_pTOXBase, m_pAttrSet.get(), true);
}
else
{
- rDoc.InsertSwSection( *rUndoIter.pAktPam, *pSection, pAttr, true );
+ rDoc.InsertSwSection(*rUndoIter.pAktPam,
+ *m_pSectionData, 0, m_pAttrSet.get(), true);
}
- if( pHistory )
- pHistory->SetTmpEnd( pHistory->Count() );
+ if (m_pHistory.get())
+ {
+ m_pHistory->SetTmpEnd( m_pHistory->Count() );
+ }
- SwSectionNode* pSectNd = rDoc.GetNodes()[ nSectNodePos ]->GetSectionNode();
- if( pRedlData && IDocumentRedlineAccess::IsRedlineOn( GetRedlineMode() ))
+ SwSectionNode *const pSectNd =
+ rDoc.GetNodes()[ m_nSectionNodePos ]->GetSectionNode();
+ if (m_pRedlData.get() &&
+ IDocumentRedlineAccess::IsRedlineOn( GetRedlineMode()))
{
RedlineMode_t eOld = rDoc.GetRedlineMode();
rDoc.SetRedlineMode_intern((RedlineMode_t)(eOld & ~nsRedlineMode_t::REDLINE_IGNORE));
SwPaM aPam( *pSectNd->EndOfSectionNode(), *pSectNd, 1 );
- rDoc.AppendRedline( new SwRedline( *pRedlData, aPam ), true);
+ rDoc.AppendRedline( new SwRedline( *m_pRedlData, aPam ), true);
rDoc.SetRedlineMode_intern( eOld );
}
else if( !( nsRedlineMode_t::REDLINE_IGNORE & GetRedlineMode() ) &&
@@ -228,16 +227,15 @@ void SwUndoInsSection::Redo( SwUndoIter& rUndoIter )
void SwUndoInsSection::Repeat( SwUndoIter& rUndoIter )
{
- if( pSection->ISA( SwTOXBaseSection ))
+ if (m_pTOXBase.get())
{
- const SwTOXBase& rBase = *(SwTOXBaseSection*)pSection;
rUndoIter.GetDoc().InsertTableOf( *rUndoIter.pAktPam->GetPoint(),
- rBase, pAttr, TRUE );
+ *m_pTOXBase, m_pAttrSet.get(), true);
}
else
{
rUndoIter.GetDoc().InsertSwSection( *rUndoIter.pAktPam,
- *pSection, pAttr );
+ *m_pSectionData, 0, m_pAttrSet.get());
}
}
@@ -254,7 +252,7 @@ void SwUndoInsSection::Join( SwDoc& rDoc, ULONG nNode )
}
pTxtNd->JoinNext();
- if( pHistory )
+ if (m_pHistory.get())
{
SwIndex aCntIdx( pTxtNd, 0 );
pTxtNd->RstAttr( aCntIdx, pTxtNd->Len(), 0, 0, true );
@@ -262,74 +260,99 @@ void SwUndoInsSection::Join( SwDoc& rDoc, ULONG nNode )
}
-void SwUndoInsSection::SaveSplitNode( SwTxtNode* pTxtNd, BOOL bAtStt )
+void
+SwUndoInsSection::SaveSplitNode(SwTxtNode *const pTxtNd, bool const bAtStart)
{
if( pTxtNd->GetpSwpHints() )
{
- if( !pHistory )
- pHistory = new SwHistory;
- pHistory->CopyAttr( pTxtNd->GetpSwpHints(), pTxtNd->GetIndex(), 0,
+ if (!m_pHistory.get())
+ {
+ m_pHistory.reset( new SwHistory );
+ }
+ m_pHistory->CopyAttr( pTxtNd->GetpSwpHints(), pTxtNd->GetIndex(), 0,
pTxtNd->GetTxt().Len(), false );
}
- if( bAtStt )
- bSplitAtStt = TRUE;
+ if (bAtStart)
+ {
+ m_bSplitAtStart = true;
+ }
else
- bSplitAtEnd = TRUE;
+ {
+ m_bSplitAtEnd = true;
+ }
}
-// -----------------------------
+////////////////////////////////////////////////////////////////////////////
-SwUndoDelSection::SwUndoDelSection( const SwSectionFmt& rFmt )
- : SwUndo( UNDO_DELSECTION )
+class SwUndoDelSection
+ : public SwUndo
{
- const SwSection& rSect = *rFmt.GetSection();
- if( rSect.ISA( SwTOXBaseSection ))
- {
- const SwTOXBase& rBase = (SwTOXBaseSection&)rSect;
- pSection = new SwTOXBaseSection( rBase );
- }
- else
- pSection = new SwSection( rSect.GetType(), rSect.GetName() );
- *pSection = rSect;
-
- pAttr = ::lcl_GetAttrSet( rSect );
-
- const SwNodeIndex* pIdx = rFmt.GetCntnt().GetCntntIdx();
- nSttNd = pIdx->GetIndex();
- nEndNd = pIdx->GetNode().EndOfSectionIndex();
+private:
+ ::std::auto_ptr<SwSectionData> const m_pSectionData; /// section not TOX
+ ::std::auto_ptr<SwTOXBase> const m_pTOXBase; /// set iff section is TOX
+ ::std::auto_ptr<SfxItemSet> const m_pAttrSet;
+ ::boost::shared_ptr< ::sfx2::MetadatableUndo > const m_pMetadataUndo;
+ ULONG const m_nStartNode;
+ ULONG const m_nEndNode;
+
+public:
+ SwUndoDelSection(
+ SwSectionFmt const&, SwSection const&, SwNodeIndex const*const);
+ virtual ~SwUndoDelSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+SW_DLLPRIVATE SwUndo * MakeUndoDelSection(SwSectionFmt const& rFormat)
+{
+ return new SwUndoDelSection(rFormat, *rFormat.GetSection(),
+ rFormat.GetCntnt().GetCntntIdx());
}
+SwUndoDelSection::SwUndoDelSection(
+ SwSectionFmt const& rSectionFmt, SwSection const& rSection,
+ SwNodeIndex const*const pIndex)
+ : SwUndo( UNDO_DELSECTION )
+ , m_pSectionData( new SwSectionData(rSection) )
+ , m_pTOXBase( rSection.ISA( SwTOXBaseSection )
+ ? new SwTOXBase(static_cast<SwTOXBaseSection const&>(rSection))
+ : 0 )
+ , m_pAttrSet( ::lcl_GetAttrSet(rSection) )
+ , m_pMetadataUndo( rSectionFmt.CreateUndo() )
+ , m_nStartNode( pIndex->GetIndex() )
+ , m_nEndNode( pIndex->GetNode().EndOfSectionIndex() )
+{
+}
SwUndoDelSection::~SwUndoDelSection()
{
- delete pSection;
- delete pAttr;
}
-
void SwUndoDelSection::Undo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- if( pSection->ISA( SwTOXBaseSection ))
+ if (m_pTOXBase.get())
{
- const SwTOXBase& rBase = *(SwTOXBaseSection*)pSection;
- rDoc.InsertTableOf( nSttNd, nEndNd-2, rBase, pAttr );
+ rDoc.InsertTableOf(m_nStartNode, m_nEndNode-2, *m_pTOXBase,
+ m_pAttrSet.get());
}
else
{
- SwNodeIndex aStt( rDoc.GetNodes(), nSttNd );
- SwNodeIndex aEnd( rDoc.GetNodes(), nEndNd-2 );
+ SwNodeIndex aStt( rDoc.GetNodes(), m_nStartNode );
+ SwNodeIndex aEnd( rDoc.GetNodes(), m_nEndNode-2 );
SwSectionFmt* pFmt = rDoc.MakeSectionFmt( 0 );
- if( pAttr )
- pFmt->SetFmtAttr( *pAttr );
+ if (m_pAttrSet.get())
+ {
+ pFmt->SetFmtAttr( *m_pAttrSet );
+ }
/// OD 04.10.2002 #102894#
/// remember inserted section node for further calculations
- SwSectionNode* pInsertedSectNd =
- rDoc.GetNodes().InsertSection( aStt, *pFmt, *pSection, &aEnd );
+ SwSectionNode* pInsertedSectNd = rDoc.GetNodes().InsertTextSection(
+ aStt, *pFmt, *m_pSectionData, 0, & aEnd);
if( SFX_ITEM_SET == pFmt->GetItemState( RES_FTN_AT_TXTEND ) ||
SFX_ITEM_SET == pFmt->GetItemState( RES_END_AT_TXTEND ))
@@ -356,63 +379,86 @@ void SwUndoDelSection::Undo( SwUndoIter& rUndoIter )
aInsertedSect.SetCondHidden( bRecalcCondHidden );
}
+ pFmt->RestoreMetadata(m_pMetadataUndo);
}
}
-
void SwUndoDelSection::Redo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- SwSectionNode* pNd = rDoc.GetNodes()[ nSttNd ]->GetSectionNode();
+ SwSectionNode *const pNd =
+ rDoc.GetNodes()[ m_nStartNode ]->GetSectionNode();
ASSERT( pNd, "wo ist mein SectionNode?" );
// einfach das Format loeschen, der Rest erfolgt automatisch
rDoc.DelSectionFmt( pNd->GetSection().GetFmt() );
}
+////////////////////////////////////////////////////////////////////////////
-SwUndoChgSection::SwUndoChgSection( const SwSectionFmt& rFmt, BOOL bOnlyAttr )
- : SwUndo( UNDO_CHGSECTION ), bOnlyAttrChgd( bOnlyAttr )
+class SwUndoUpdateSection
+ : public SwUndo
{
- const SwSection& rSect = *rFmt.GetSection();
- pSection = new SwSection( rSect.GetType(), rSect.GetName() );
- *pSection = rSect;
-
- pAttr = ::lcl_GetAttrSet( rSect );
-
- nSttNd = rFmt.GetCntnt().GetCntntIdx()->GetIndex();
+private:
+ ::std::auto_ptr<SwSectionData> m_pSectionData;
+ ::std::auto_ptr<SfxItemSet> m_pAttrSet;
+ ULONG const m_nStartNode;
+ bool const m_bOnlyAttrChanged;
+
+public:
+ SwUndoUpdateSection(
+ SwSection const&, SwNodeIndex const*const, bool const bOnlyAttr);
+ virtual ~SwUndoUpdateSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+SW_DLLPRIVATE SwUndo *
+MakeUndoUpdateSection(SwSectionFmt const& rFormat, bool const bOnlyAttr)
+{
+ return new SwUndoUpdateSection(*rFormat.GetSection(),
+ rFormat.GetCntnt().GetCntntIdx(), bOnlyAttr);
}
-
-SwUndoChgSection::~SwUndoChgSection()
+SwUndoUpdateSection::SwUndoUpdateSection(
+ SwSection const& rSection, SwNodeIndex const*const pIndex,
+ bool const bOnlyAttr)
+ : SwUndo( UNDO_CHGSECTION )
+ , m_pSectionData( new SwSectionData(rSection) )
+ , m_pAttrSet( ::lcl_GetAttrSet(rSection) )
+ , m_nStartNode( pIndex->GetIndex() )
+ , m_bOnlyAttrChanged( bOnlyAttr )
{
- delete pSection;
- delete pAttr;
}
+SwUndoUpdateSection::~SwUndoUpdateSection()
+{
+}
-void SwUndoChgSection::Undo( SwUndoIter& rUndoIter )
+void SwUndoUpdateSection::Undo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- SwSectionNode* pSectNd = rDoc.GetNodes()[ nSttNd ]->GetSectionNode();
+ SwSectionNode *const pSectNd =
+ rDoc.GetNodes()[ m_nStartNode ]->GetSectionNode();
ASSERT( pSectNd, "wo ist mein SectionNode?" );
SwSection& rNdSect = pSectNd->GetSection();
SwFmt* pFmt = rNdSect.GetFmt();
SfxItemSet* pCur = ::lcl_GetAttrSet( rNdSect );
- if( pAttr )
+ if (m_pAttrSet.get())
{
// das Content- und Protect-Item muss bestehen bleiben
const SfxPoolItem* pItem;
- pAttr->Put( pFmt->GetFmtAttr( RES_CNTNT ));
+ m_pAttrSet->Put( pFmt->GetFmtAttr( RES_CNTNT ));
if( SFX_ITEM_SET == pFmt->GetItemState( RES_PROTECT, TRUE, &pItem ))
- pAttr->Put( *pItem );
- pFmt->DelDiffs( *pAttr );
- pAttr->ClearItem( RES_CNTNT );
- pFmt->SetFmtAttr( *pAttr );
- delete pAttr;
+ {
+ m_pAttrSet->Put( *pItem );
+ }
+ pFmt->DelDiffs( *m_pAttrSet );
+ m_pAttrSet->ClearItem( RES_CNTNT );
+ pFmt->SetFmtAttr( *m_pAttrSet );
}
else
{
@@ -421,22 +467,20 @@ void SwUndoChgSection::Undo( SwUndoIter& rUndoIter )
pFmt->ResetFmtAttr( RES_HEADER, RES_OPAQUE );
pFmt->ResetFmtAttr( RES_SURROUND, RES_FRMATR_END-1 );
}
- pAttr = pCur;
+ m_pAttrSet.reset(pCur);
- if( !bOnlyAttrChgd )
+ if (!m_bOnlyAttrChanged)
{
- BOOL bUpdate = (!rNdSect.IsLinkType() && pSection->IsLinkType() ) ||
- ( pSection->GetLinkFileName().Len() &&
- pSection->GetLinkFileName() !=
- rNdSect.GetLinkFileName());
-
- SwSection* pTmp = new SwSection( CONTENT_SECTION, aEmptyStr );
- *pTmp = rNdSect; // das aktuelle sichern
+ const bool bUpdate =
+ (!rNdSect.IsLinkType() && m_pSectionData->IsLinkType())
+ || ( m_pSectionData->GetLinkFileName().Len()
+ && (m_pSectionData->GetLinkFileName() !=
+ rNdSect.GetLinkFileName()));
- rNdSect = *pSection; // das alte setzen
-
- delete pSection;
- pSection = pTmp; // das aktuelle ist jetzt das alte
+ // swap stored section data with live section data
+ SwSectionData *const pOld( new SwSectionData(rNdSect) );
+ rNdSect.SetSectionData(*m_pSectionData);
+ m_pSectionData.reset(pOld);
if( bUpdate )
rNdSect.CreateLink( CREATE_UPDATE );
@@ -448,8 +492,8 @@ void SwUndoChgSection::Undo( SwUndoIter& rUndoIter )
}
}
-
-void SwUndoChgSection::Redo( SwUndoIter& rUndoIter )
+void SwUndoUpdateSection::Redo( SwUndoIter& rUndoIter )
{
Undo( rUndoIter );
}
+
diff --git a/sw/source/core/unocore/unocoll.cxx b/sw/source/core/unocore/unocoll.cxx
index efe1aae42569..0b8f938d307d 100644
--- a/sw/source/core/unocore/unocoll.cxx
+++ b/sw/source/core/unocore/unocoll.cxx
@@ -1363,7 +1363,8 @@ uno::Any SwXTextSections::getByName(const OUString& Name)
for(sal_uInt16 i = 0; i < rFmts.Count(); i++)
{
SwSectionFmt* pFmt = rFmts[i];
- if(pFmt->IsInNodesArr() && aName == pFmt->GetSection()->GetName())
+ if (pFmt->IsInNodesArr()
+ && (aName == pFmt->GetSection()->GetSectionName()))
{
xSect = GetObject(*pFmt);
aRet.setValue(&xSect, ::getCppuType((uno::Reference<XTextSection>*)0));
@@ -1407,7 +1408,7 @@ uno::Sequence< OUString > SwXTextSections::getElementNames(void)
{
pFmt = rFmts[++nIndex];
}
- pArray[i] = pFmt->GetSection()->GetName();
+ pArray[i] = pFmt->GetSection()->GetSectionName();
}
}
return aSeq;
@@ -1427,7 +1428,7 @@ sal_Bool SwXTextSections::hasByName(const OUString& Name)
for(sal_uInt16 i = 0; i < rFmts.Count(); i++)
{
const SwSectionFmt* pFmt = rFmts[i];
- if(aName == pFmt->GetSection()->GetName())
+ if (aName == pFmt->GetSection()->GetSectionName())
{
bRet = sal_True;
break;
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx
index b9fe5556744c..92a33da130fe 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -88,6 +88,8 @@
// --> OD 2008-11-26 #158694#
#include <SwNodeNum.hxx>
// <--
+#include <fmtmeta.hxx>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -102,6 +104,37 @@ using ::rtl::OUString;
namespace SwUnoCursorHelper
{
+uno::Reference<text::XTextContent>
+GetNestedTextContent(SwTxtNode & rTextNode, xub_StrLen const nIndex,
+ bool const bParent)
+{
+ // these should be unambiguous because of the dummy character
+ SwTxtNode::GetTxtAttrMode const eMode( (bParent)
+ ? SwTxtNode::PARENT : SwTxtNode::EXPAND );
+ SwTxtAttr *const pMetaTxtAttr =
+ rTextNode.GetTxtAttrAt(nIndex, RES_TXTATR_META, eMode);
+ SwTxtAttr *const pMetaFieldTxtAttr =
+ rTextNode.GetTxtAttrAt(nIndex, RES_TXTATR_METAFIELD, eMode);
+ // which is innermost?
+ SwTxtAttr *const pTxtAttr = (pMetaTxtAttr)
+ ? ((pMetaFieldTxtAttr)
+ ? ((*pMetaFieldTxtAttr->GetStart() >
+ *pMetaTxtAttr->GetStart())
+ ? pMetaFieldTxtAttr : pMetaTxtAttr)
+ : pMetaTxtAttr)
+ : pMetaFieldTxtAttr;
+ uno::Reference<XTextContent> xRet;
+ if (pTxtAttr)
+ {
+ ::sw::Meta *const pMeta(
+ static_cast<SwFmtMeta &>(pTxtAttr->GetAttr()).GetMeta());
+ OSL_ASSERT(pMeta);
+ xRet.set(pMeta->MakeUnoObject(), uno::UNO_QUERY);
+ }
+ return xRet;
+}
+
+
/* -----------------16.09.98 12:27-------------------
* Lesen spezieller Properties am Cursor
* --------------------------------------------------*/
@@ -300,14 +333,15 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
break;
case FN_UNO_DOCUMENT_INDEX_MARK:
{
- SwTxtAttr* pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttr(
- rPam.GetPoint()->nContent, RES_TXTATR_TOXMARK);
- if(pTxtAttr)
+ ::std::vector<SwTxtAttr *> const marks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_TOXMARK));
+ if (marks.size())
{
if( pAny )
- {
+ { // hmm... can only return 1 here
SwTOXMark & rMark =
- static_cast<SwTOXMark&>(pTxtAttr->GetAttr());
+ static_cast<SwTOXMark &>((*marks.begin())->GetAttr());
const uno::Reference< text::XDocumentIndexMark > xRef =
SwXDocumentIndexMark::CreateXDocumentIndexMark(
*rPam.GetDoc(),
@@ -343,9 +377,10 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
const SwPosition *pPos = rPam.Start();
const SwTxtNode *pTxtNd =
rPam.GetDoc()->GetNodes()[pPos->nNode.GetIndex()]->GetTxtNode();
- SwTxtAttr* pTxtAttr =
- pTxtNd ? pTxtNd->GetTxtAttr(pPos->nContent, RES_TXTATR_FIELD)
- : 0;
+ SwTxtAttr *const pTxtAttr = (pTxtNd)
+ ? pTxtNd->GetTxtAttrForCharAt(
+ pPos->nContent.GetIndex(), RES_TXTATR_FIELD)
+ : 0;
if(pTxtAttr)
{
if( pAny )
@@ -434,8 +469,9 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
case FN_UNO_ENDNOTE:
case FN_UNO_FOOTNOTE:
{
- SwTxtAttr* pTxtAttr = rPam.GetNode()->GetTxtNode()->
- GetTxtAttr(rPam.GetPoint()->nContent, RES_TXTATR_FTN);
+ SwTxtAttr *const pTxtAttr =
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN);
if(pTxtAttr)
{
const SwFmtFtn& rFtn = pTxtAttr->GetFtn();
@@ -457,13 +493,14 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
break;
case FN_UNO_REFERENCE_MARK:
{
- SwTxtAttr* pTxtAttr = rPam.GetNode()->GetTxtNode()->
- GetTxtAttr(rPam.GetPoint()->nContent, RES_TXTATR_REFMARK);
- if(pTxtAttr)
+ ::std::vector<SwTxtAttr *> const marks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_REFMARK));
+ if (marks.size())
{
if( pAny )
- {
- const SwFmtRefMark& rRef = pTxtAttr->GetRefMark();
+ { // hmm... can only return 1 here
+ const SwFmtRefMark& rRef = (*marks.begin())->GetRefMark();
uno::Reference< XTextContent > xRef = SwXReferenceMarks::GetObject( rPam.GetDoc(), &rRef );
pAny->setValue(&xRef, ::getCppuType((uno::Reference<XTextContent>*)0));
}
@@ -472,6 +509,24 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
eNewState = PropertyState_DEFAULT_VALUE;
}
break;
+ case FN_UNO_NESTED_TEXT_CONTENT:
+ {
+ uno::Reference<XTextContent> const xRet(
+ GetNestedTextContent(*rPam.GetNode()->GetTxtNode(),
+ rPam.GetPoint()->nContent.GetIndex(), false));
+ if (xRet.is())
+ {
+ if (pAny)
+ {
+ (*pAny) <<= xRet;
+ }
+ }
+ else
+ {
+ eNewState = PropertyState_DEFAULT_VALUE;
+ }
+ }
+ break;
case FN_UNO_CHARFMT_SEQUENCE:
{
diff --git a/sw/source/core/unocore/unoidx.cxx b/sw/source/core/unocore/unoidx.cxx
index 8749e9efb80a..d51225f84f96 100644
--- a/sw/source/core/unocore/unoidx.cxx
+++ b/sw/source/core/unocore/unoidx.cxx
@@ -915,9 +915,9 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
const SwSectionFmt* pTmpFmt = rSects[ i ];
if (pTmpFmt == pSectionFmt)
{
- m_pImpl->m_pDoc->ChgSection( i,
- static_cast<SwTOXBaseSection&>(rTOXBase),
- & aAttrSet);
+ SwSectionData tmpData(
+ static_cast<SwTOXBaseSection&>(rTOXBase));
+ m_pImpl->m_pDoc->UpdateSection(i, tmpData, & aAttrSet);
break;
}
}
@@ -1510,7 +1510,7 @@ OUString SAL_CALL SwXDocumentIndex::getName() throw (uno::RuntimeException)
}
else if(pSectionFmt)
{
- uRet = OUString(pSectionFmt->GetSection()->GetName());
+ uRet = OUString(pSectionFmt->GetSection()->GetSectionName());
}
else
{
@@ -1551,6 +1551,25 @@ SwXDocumentIndex::setName(const OUString& rName) throw (uno::RuntimeException)
}
}
+// MetadatableMixin
+::sfx2::Metadatable* SwXDocumentIndex::GetCoreObject()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ return pSectionFmt;
+}
+
+uno::Reference<frame::XModel> SwXDocumentIndex::GetModel()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ if (pSectionFmt)
+ {
+ SwDocShell const*const pShell( pSectionFmt->GetDoc()->GetDocShell() );
+ return (pShell) ? pShell->GetModel() : 0;
+ }
+ return 0;
+}
+
+
/******************************************************************
* SwXDocumentIndexMark
******************************************************************/
@@ -1573,6 +1592,8 @@ lcl_TypeToPropertyMap_Mark(const TOXTypes eType)
class SwXDocumentIndexMark::Impl
: public SwClient
{
+private:
+ bool m_bInReplaceMark;
public:
@@ -1599,6 +1620,7 @@ public:
const enum TOXTypes eType,
SwTOXType *const pType, SwTOXMark const*const pMark)
: SwClient(const_cast<SwTOXMark*>(pMark))
+ , m_bInReplaceMark(false)
, m_rPropSet(
*aSwMapProvider.GetPropertySet(lcl_TypeToPropertyMap_Mark(eType)))
, m_eTOXType(eType)
@@ -1617,11 +1639,33 @@ public:
const_cast<SwModify *>(m_TypeDepend.GetRegisteredIn()));
}
+ void DeleteTOXMark()
+ {
+ m_pDoc->DeleteTOXMark(m_pTOXMark); // calls Invalidate() via Modify!
+ m_pTOXMark = 0;
+ }
+
+ void InsertTOXMark(SwTOXType & rTOXType, SwTOXMark & rMark, SwPaM & rPam,
+ SwXTextCursor const*const pTextCursor);
+
+ void ReplaceTOXMark(SwTOXType & rTOXType, SwTOXMark & rMark, SwPaM & rPam)
+ {
+ m_bInReplaceMark = true;
+ DeleteTOXMark();
+ m_bInReplaceMark = false;
+ try {
+ InsertTOXMark(rTOXType, rMark, rPam, 0);
+ } catch (...) {
+ OSL_ENSURE(false, "ReplaceTOXMark() failed!");
+ m_ListenerContainer.Disposing();
+ throw;
+ }
+ }
+
void Invalidate();
// SwClient
virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew);
-
};
/* -----------------------------16.10.00 11:24--------------------------------
@@ -1638,7 +1682,10 @@ void SwXDocumentIndexMark::Impl::Invalidate()
&m_TypeDepend);
}
}
- m_ListenerContainer.Disposing();
+ if (!m_bInReplaceMark) // #i109983# only dispose on delete, not on replace!
+ {
+ m_ListenerContainer.Disposing();
+ }
m_pDoc = 0;
m_pTOXMark = 0;
}
@@ -1831,32 +1878,7 @@ throw (uno::RuntimeException)
else
aPam.GetPoint()->nContent++;
- // delete old mark
- m_pImpl->m_pDoc->DeleteTOXMark(m_pImpl->m_pTOXMark);
- m_pImpl->m_pTOXMark = 0;
-
- SwTxtAttr* pTxtAttr = 0;
- sal_Bool bInsAtPos = aMark.IsAlternativeText();
- const SwPosition *pStt = aPam.Start(),
- *pEnd = aPam.End();
- if( bInsAtPos )
- {
- SwPaM aTmp( *pStt );
- m_pImpl->m_pDoc->InsertPoolItem( aTmp, aMark, 0 );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttrForCharAt(
- pStt->nContent.GetIndex()-1, RES_TXTATR_TOXMARK);
- }
- else if( *pEnd != *pStt )
- {
- m_pImpl->m_pDoc->InsertPoolItem( aPam, aMark,
- nsSetAttrMode::SETATTR_DONTEXPAND );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttr(
- pStt->nContent, RES_TXTATR_TOXMARK);
- }
- if(pTxtAttr)
- {
- m_pImpl->m_pTOXMark = &pTxtAttr->GetTOXMark();
- }
+ m_pImpl->ReplaceTOXMark(*pType, aMark, aPam);
}
else if (m_pImpl->m_bIsDescriptor)
{
@@ -1984,17 +2006,45 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
default:
break;
}
+
+ m_pImpl->InsertTOXMark(*const_cast<SwTOXType *>(pTOXType), aMark, aPam,
+ dynamic_cast<SwXTextCursor const*>(pCursor));
+
+ m_pImpl->m_bIsDescriptor = sal_False;
+}
+
+template<typename T> struct NotContainedIn
+{
+ ::std::vector<T> const& m_rVector;
+ explicit NotContainedIn(::std::vector<T> const& rVector)
+ : m_rVector(rVector) { }
+ bool operator() (T const& rT) {
+ return ::std::find(m_rVector.begin(), m_rVector.end(), rT)
+ == m_rVector.end();
+ }
+};
+
+void SwXDocumentIndexMark::Impl::InsertTOXMark(
+ SwTOXType & rTOXType, SwTOXMark & rMark, SwPaM & rPam,
+ SwXTextCursor const*const pTextCursor)
+{
+ SwDoc *const pDoc( rPam.GetDoc() );
UnoActionContext aAction(pDoc);
- const sal_Bool bMark = *aPam.GetPoint() != *aPam.GetMark();
+ bool bMark = *rPam.GetPoint() != *rPam.GetMark();
+ // n.b.: toxmarks must have either alternative text or an extent
+ if (bMark && rMark.GetAlternativeText().Len())
+ {
+ rPam.Normalize(TRUE);
+ rPam.DeleteMark();
+ bMark = false;
+ }
// Marks ohne Alternativtext ohne selektierten Text koennen nicht eingefuegt werden,
// deshalb hier ein Leerzeichen - ob das die ideale Loesung ist?
- if (!bMark && !aMark.GetAlternativeText().Len())
+ if (!bMark && !rMark.GetAlternativeText().Len())
{
- aMark.SetAlternativeText( String(' ') );
+ rMark.SetAlternativeText( String(' ') );
}
- SwXTextCursor const*const pTextCursor(
- dynamic_cast<SwXTextCursor*>(pCursor));
const bool bForceExpandHints( (!bMark && pTextCursor)
? pTextCursor->IsAtEndOfMeta() : false );
const SetAttrMode nInsertFlags = (bForceExpandHints)
@@ -2002,35 +2052,54 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
| nsSetAttrMode::SETATTR_DONTEXPAND)
: nsSetAttrMode::SETATTR_DONTEXPAND;
- pDoc->InsertPoolItem(aPam, aMark, nInsertFlags);
- if (bMark && *aPam.GetPoint() > *aPam.GetMark())
+ ::std::vector<SwTxtAttr *> oldMarks;
+ if (bMark)
+ {
+ oldMarks = rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_TOXMARK);
+ }
+
+ pDoc->InsertPoolItem(rPam, rMark, nInsertFlags);
+ if (bMark && *rPam.GetPoint() > *rPam.GetMark())
{
- aPam.Exchange();
+ rPam.Exchange();
}
- SwTxtAttr* pTxtAttr = 0;
+ // rMark was copied into the document pool; now retrieve real format...
+ SwTxtAttr * pTxtAttr(0);
if (bMark)
{
- pTxtAttr = aPam.GetNode()->GetTxtNode()->GetTxtAttr(
- aPam.GetPoint()->nContent, RES_TXTATR_TOXMARK );
+ // #i107672#
+ // ensure that we do not retrieve a different mark at the same position
+ ::std::vector<SwTxtAttr *> const newMarks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_TOXMARK));
+ ::std::vector<SwTxtAttr *>::const_iterator const iter(
+ ::std::find_if(newMarks.begin(), newMarks.end(),
+ NotContainedIn<SwTxtAttr *>(oldMarks)));
+ OSL_ASSERT(newMarks.end() != iter);
+ if (newMarks.end() != iter)
+ {
+ pTxtAttr = *iter;
+ }
}
else
{
- pTxtAttr = aPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
- aPam.GetPoint()->nContent.GetIndex()-1, RES_TXTATR_TOXMARK );
+ pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rPam.GetPoint()->nContent.GetIndex()-1, RES_TXTATR_TOXMARK );
}
if (!pTxtAttr)
{
- throw uno::RuntimeException();
+ throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "SwXDocumentIndexMark::InsertTOXMark(): cannot insert attribute")),
+ 0);
}
- m_pImpl->m_pTOXMark = &pTxtAttr->GetTOXMark();
- m_pImpl->m_pDoc = pDoc;
- m_pImpl->m_bIsDescriptor = sal_False;
-
- const_cast<SwTOXMark*>(m_pImpl->m_pTOXMark)->Add(m_pImpl.get());
- const_cast<SwTOXType*>(pTOXType)->Add(&m_pImpl->m_TypeDepend);
+ m_pDoc = pDoc;
+ m_pTOXMark = & pTxtAttr->GetTOXMark();
+ const_cast<SwTOXMark*>(m_pTOXMark)->Add(this);
+ const_cast<SwTOXType &>(rTOXType).Add(& m_TypeDepend);
}
/*-- 14.12.98 10:25:45---------------------------------------------------
@@ -2081,7 +2150,7 @@ SwXDocumentIndexMark::dispose() throw (uno::RuntimeException)
SwTOXType *const pType = m_pImpl->GetTOXType();
if (pType && m_pImpl->m_pTOXMark)
{
- m_pImpl->m_pDoc->DeleteTOXMark(m_pImpl->m_pTOXMark);
+ m_pImpl->DeleteTOXMark(); // call Invalidate() via modify!
}
}
/*-- 14.12.98 10:25:45---------------------------------------------------
@@ -2181,8 +2250,6 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
SwTOXType *const pType = m_pImpl->GetTOXType();
if (pType && m_pImpl->m_pTOXMark)
{
- SwDoc* pLocalDoc = m_pImpl->m_pDoc;
-
SwTOXMark aMark(*m_pImpl->m_pTOXMark);
switch(pEntry->nWID)
{
@@ -2225,37 +2292,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
aPam.GetPoint()->nContent++;
}
- //delete the old mark
- pLocalDoc->DeleteTOXMark(m_pImpl->m_pTOXMark);
- m_pImpl->m_pTOXMark = 0;
-
- sal_Bool bInsAtPos = aMark.IsAlternativeText();
- const SwPosition *pStt = aPam.Start();
- const SwPosition *pEnd = aPam.End();
-
- SwTxtAttr* pTxtAttr = 0;
- if( bInsAtPos )
- {
- SwPaM aTmp( *pStt );
- pLocalDoc->InsertPoolItem( aTmp, aMark, 0 );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttrForCharAt(
- pStt->nContent.GetIndex()-1, RES_TXTATR_TOXMARK );
- }
- else if( *pEnd != *pStt )
- {
- pLocalDoc->InsertPoolItem( aPam, aMark,
- nsSetAttrMode::SETATTR_DONTEXPAND );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttr(
- pStt->nContent, RES_TXTATR_TOXMARK );
- }
- m_pImpl->m_pDoc = pLocalDoc;
-
- if(pTxtAttr)
- {
- m_pImpl->m_pTOXMark = &pTxtAttr->GetTOXMark();
- const_cast<SwTOXMark*>(m_pImpl->m_pTOXMark)->Add(m_pImpl.get());
- pType->Add(&m_pImpl->m_TypeDepend);
- }
+ m_pImpl->ReplaceTOXMark(*pType, aMark, aPam);
}
else if (m_pImpl->m_bIsDescriptor)
{
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index 94d1f47fff12..765b1ae37485 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -279,10 +279,11 @@ SwUnoPropertyMapProvider::~SwUnoPropertyMapProvider()
COMMON_CRSR_PARA_PROPERTIES\
{ SW_PROP_NMID(UNO_NAME_DOCUMENT_INDEX_MARK), FN_UNO_DOCUMENT_INDEX_MARK, CPPU_E2T(CPPUTYPE_REFDOCIDXMRK), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
{ SW_PROP_NMID(UNO_NAME_TEXT_FIELD), FN_UNO_TEXT_FIELD, CPPU_E2T(CPPUTYPE_REFTXTFIELD), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
- { SW_PROP_NMID(UNO_NAME_REFERENCE_MARK), FN_UNO_REFERENCE_MARK, CPPU_E2T(CPPUTYPE_REFTEXTCNTNT), PropertyAttribute::MAYBEVOID ,0 },\
+ { SW_PROP_NMID(UNO_NAME_REFERENCE_MARK), FN_UNO_REFERENCE_MARK, CPPU_E2T(CPPUTYPE_REFTEXTCNTNT), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY, 0 },\
{ SW_PROP_NMID(UNO_NAME_FOOTNOTE), FN_UNO_FOOTNOTE, CPPU_E2T(CPPUTYPE_REFFOOTNOTE), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
{ SW_PROP_NMID(UNO_NAME_ENDNOTE), FN_UNO_ENDNOTE, CPPU_E2T(CPPUTYPE_REFFOOTNOTE), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
{ SW_PROP_NMID(UNO_NAME_HYPER_LINK_EVENTS), RES_TXTATR_INETFMT, CPPU_E2T(CPPUTYPE_REFNMREPLACE), PropertyAttribute::MAYBEVOID, MID_URL_HYPERLINKEVENTS},\
+ { SW_PROP_NMID(UNO_NAME_NESTED_TEXT_CONTENT), FN_UNO_NESTED_TEXT_CONTENT, CPPU_E2T(CPPUTYPE_REFTEXTCNTNT), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY, 0 },\
TABSTOPS_MAP_ENTRY
diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx
index 161afb2373bd..d9334e97c841 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -1934,8 +1934,8 @@ lcl_FillFrame(SwClient & rEnum, SwUnoCrsr& rUnoCrsr,
{
// search for objects at the cursor - anchored at/as char
SwTxtAttr const*const pTxtAttr =
- rUnoCrsr.GetNode()->GetTxtNode()->GetTxtAttr(
- rUnoCrsr.GetPoint()->nContent, RES_TXTATR_FLYCNT);
+ rUnoCrsr.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rUnoCrsr.GetPoint()->nContent.GetIndex(), RES_TXTATR_FLYCNT);
if (pTxtAttr)
{
const SwFmtFlyCnt& rFlyCnt = pTxtAttr->GetFlyCnt();
diff --git a/sw/source/core/unocore/unoprnms.cxx b/sw/source/core/unocore/unoprnms.cxx
index f049764a2b23..049ccfe42ed7 100644
--- a/sw/source/core/unocore/unoprnms.cxx
+++ b/sw/source/core/unocore/unoprnms.cxx
@@ -778,6 +778,7 @@ const SwPropNameTab aPropNameTab = {
/* 0736 UNO_NAME_OUTLINE_LEVEL */ {MAP_CHAR_LEN("OutlineLevel")},//#outline level,add<-zhaojianwei Outlinelevel
/* 0737 UNO_NAME_DESCRIPTION */ {MAP_CHAR_LEN("Description")},
/* 0738 UNO_NAME_META */ {MAP_CHAR_LEN("InContentMetadata")},
+/* 0739 UNO_NAME_NESTED_TEXT_CONTENT */ {MAP_CHAR_LEN("NestedTextContent")},
};
const SwPropNameLen& SwGetPropName( USHORT nId )
diff --git a/sw/source/core/unocore/unorefmk.cxx b/sw/source/core/unocore/unorefmk.cxx
index 1450e1bd806a..622a995df0ac 100644
--- a/sw/source/core/unocore/unorefmk.cxx
+++ b/sw/source/core/unocore/unorefmk.cxx
@@ -38,6 +38,7 @@
#include <unomap.hxx>
#include <unocrsr.hxx>
#include <unoevtlstnr.hxx>
+#include <unocrsrhelper.hxx>
#include <doc.hxx>
#include <ndtxt.hxx>
#include <fmtrfmrk.hxx>
@@ -235,6 +236,17 @@ throw (uno::RuntimeException)
/* -----------------03.11.99 14:14-------------------
--------------------------------------------------*/
+template<typename T> struct NotContainedIn
+{
+ ::std::vector<T> const& m_rVector;
+ explicit NotContainedIn(::std::vector<T> const& rVector)
+ : m_rVector(rVector) { }
+ bool operator() (T const& rT) {
+ return ::std::find(m_rVector.begin(), m_rVector.end(), rT)
+ == m_rVector.end();
+ }
+};
+
void SwXReferenceMark::Impl::InsertRefMark(SwPaM& rPam,
SwXTextCursor const*const pCursor)
{
@@ -254,6 +266,13 @@ void SwXReferenceMark::Impl::InsertRefMark(SwPaM& rPam,
| nsSetAttrMode::SETATTR_DONTEXPAND)
: nsSetAttrMode::SETATTR_DONTEXPAND;
+ ::std::vector<SwTxtAttr *> oldMarks;
+ if (bMark)
+ {
+ oldMarks = rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_REFMARK);
+ }
+
pDoc2->InsertPoolItem( rPam, aRefMark, nInsertFlags );
if( bMark && *rPam.GetPoint() > *rPam.GetMark())
@@ -261,17 +280,38 @@ void SwXReferenceMark::Impl::InsertRefMark(SwPaM& rPam,
rPam.Exchange();
}
- SwTxtAttr *const pTxtAttr = (bMark)
- ? rPam.GetNode()->GetTxtNode()->GetTxtAttr(
- rPam.GetPoint()->nContent, RES_TXTATR_REFMARK)
- : rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ // aRefMark was copied into the document pool; now retrieve real format...
+ SwTxtAttr * pTxtAttr(0);
+ if (bMark)
+ {
+ // #i107672#
+ // ensure that we do not retrieve a different mark at the same position
+ ::std::vector<SwTxtAttr *> const newMarks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_REFMARK));
+ ::std::vector<SwTxtAttr *>::const_iterator const iter(
+ ::std::find_if(newMarks.begin(), newMarks.end(),
+ NotContainedIn<SwTxtAttr *>(oldMarks)));
+ OSL_ASSERT(newMarks.end() != iter);
+ if (newMarks.end() != iter)
+ {
+ pTxtAttr = *iter;
+ }
+ }
+ else
+ {
+ pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
rPam.GetPoint()->nContent.GetIndex() - 1, RES_TXTATR_REFMARK);
+ }
- if(pTxtAttr)
+ if (!pTxtAttr)
{
- m_pMarkFmt = &pTxtAttr->GetRefMark();
+ throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "SwXReferenceMark::InsertRefMark(): cannot insert attribute")), 0);
}
+ m_pMarkFmt = &pTxtAttr->GetRefMark();
+
pDoc2->GetUnoCallBack()->Add(this);
}
@@ -310,7 +350,6 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
m_pImpl->InsertRefMark(aPam, dynamic_cast<SwXTextCursor*>(pCursor));
m_pImpl->m_bIsDescriptor = sal_False;
m_pImpl->m_pDoc = pDocument;
- m_pImpl->m_pDoc->GetUnoCallBack()->Add(m_pImpl.get());
}
/*-- 11.12.98 10:28:34---------------------------------------------------
@@ -1159,11 +1198,7 @@ uno::Reference< text::XText > SAL_CALL
SwXMeta::getText() throw (uno::RuntimeException)
{
vos::OGuard g(Application::GetSolarMutex());
- //TODO probably this should return outer meta in case there is nesting,
- // but currently that is not done; would need to change at least
- // SwXTextPortionEnumeration and SwXMeta::attach and other places where
- // SwXMeta is constructed
- return GetParentText();
+ return this;
}
uno::Reference< text::XTextRange > SAL_CALL
@@ -1249,6 +1284,33 @@ SwXMeta::removeTextContent(
return m_pImpl->m_Text.removeTextContent(xContent);
}
+// XChild
+uno::Reference< uno::XInterface > SAL_CALL
+SwXMeta::getParent() throw (uno::RuntimeException)
+{
+ vos::OGuard g(Application::GetSolarMutex());
+ SwTxtNode * pTxtNode;
+ xub_StrLen nMetaStart;
+ xub_StrLen nMetaEnd;
+ bool const bSuccess( SetContentRange(pTxtNode, nMetaStart, nMetaEnd) );
+ OSL_ENSURE(bSuccess, "no pam?");
+ if (!bSuccess) { throw lang::DisposedException(); }
+ // in order to prevent getting this meta, subtract 1 from nMetaStart;
+ // so we get the index of the dummy character, and we exclude it
+ // by calling GetTxtAttrAt(_, _, PARENT) in GetNestedTextContent
+ uno::Reference<text::XTextContent> const xRet(
+ SwUnoCursorHelper::GetNestedTextContent(*pTxtNode, nMetaStart - 1,
+ true) );
+ return xRet;
+}
+
+void SAL_CALL
+SwXMeta::setParent(uno::Reference< uno::XInterface > const& /*xParent*/)
+ throw (uno::RuntimeException, lang::NoSupportException)
+{
+ throw lang::NoSupportException(C2S("setting parent not supported"), *this);
+}
+
// XElementAccess
uno::Type SAL_CALL
SwXMeta::getElementType() throw (uno::RuntimeException)
diff --git a/sw/source/core/unocore/unosect.cxx b/sw/source/core/unocore/unosect.cxx
index 3dda0cebec28..1e18cc5becc5 100644
--- a/sw/source/core/unocore/unosect.cxx
+++ b/sw/source/core/unocore/unosect.cxx
@@ -369,7 +369,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
}
String tmp(m_pImpl->m_sName);
- SwSection aSect(eType, pDoc->GetUniqueSectionName(&tmp));
+ SwSectionData aSect(eType, pDoc->GetUniqueSectionName(&tmp));
aSect.SetCondition(m_pImpl->m_pProps->m_sCondition);
::rtl::OUStringBuffer sLinkNameBuf(m_pImpl->m_pProps->m_sLinkFileName);
sLinkNameBuf.append(sfx2::cTokenSeperator);
@@ -379,9 +379,9 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
aSect.SetLinkFileName(sLinkNameBuf.makeStringAndClear());
aSect.SetHidden(m_pImpl->m_pProps->m_bHidden);
- aSect.SetProtect(m_pImpl->m_pProps->m_bProtect);
+ aSect.SetProtectFlag(m_pImpl->m_pProps->m_bProtect);
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSect.SetEditInReadonly(m_pImpl->m_pProps->m_bEditInReadonly);
+ aSect.SetEditInReadonlyFlag(m_pImpl->m_pProps->m_bEditInReadonly);
// <--
SfxItemSet aSet(pDoc->GetAttrPool(),
@@ -427,11 +427,11 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
// section password
if (m_pImpl->m_pProps->m_Password.getLength() > 0)
{
- aSect.SetPasswd(m_pImpl->m_pProps->m_Password);
+ aSect.SetPassword(m_pImpl->m_pProps->m_Password);
}
SwSection *const pRet =
- pDoc->InsertSwSection( aPam, aSect, aSet.Count() ? &aSet : 0 );
+ pDoc->InsertSwSection( aPam, aSect, 0, aSet.Count() ? &aSet : 0 );
pRet->GetFmt()->Add(m_pImpl.get());
pRet->GetFmt()->SetXObject(static_cast< ::cppu::OWeakObject*>(this));
@@ -549,6 +549,56 @@ SwXTextSection::getPropertySetInfo() throw (uno::RuntimeException)
/* -----------------------------12.02.01 10:45--------------------------------
---------------------------------------------------------------------------*/
+static void
+lcl_UpdateLinkType(SwSection & rSection, bool const bLinkUpdateAlways = true)
+{
+ if (rSection.GetType() == DDE_LINK_SECTION)
+ {
+ // set update type; needs an established link
+ if (!rSection.IsConnected())
+ {
+ rSection.CreateLink(CREATE_CONNECT);
+ }
+ rSection.SetUpdateType( static_cast< USHORT >((bLinkUpdateAlways)
+ ? sfx2::LINKUPDATE_ALWAYS : sfx2::LINKUPDATE_ONCALL) );
+ }
+}
+
+static void
+lcl_UpdateSection(SwSectionFmt *const pFmt,
+ ::std::auto_ptr<SwSectionData> const& pSectionData,
+ ::std::auto_ptr<SfxItemSet> const& pItemSet,
+ bool const bLinkModeChanged, bool const bLinkUpdateAlways = true)
+{
+ if (pFmt)
+ {
+ SwSection & rSection = *pFmt->GetSection();
+ SwDoc *const pDoc = pFmt->GetDoc();
+ SwSectionFmts const& rFmts = pDoc->GetSections();
+ UnoActionContext aContext(pDoc);
+ for (sal_uInt16 i = 0; i < rFmts.Count(); i++)
+ {
+ if (rFmts[i]->GetSection()->GetSectionName()
+ == rSection.GetSectionName())
+ {
+ pDoc->UpdateSection(i, *pSectionData, pItemSet.get(),
+ pDoc->IsInReading());
+ {
+ // temporarily remove actions to allow cursor update
+ UnoActionRemoveContext aRemoveContext( pDoc );
+ }
+
+ if (bLinkModeChanged)
+ {
+ lcl_UpdateLinkType(rSection, bLinkUpdateAlways);
+ }
+ // section found and processed: break from loop
+ break;
+ }
+ }
+ }
+}
+
void SwXTextSection::Impl::SetPropertyValues_Impl(
const uno::Sequence< OUString >& rPropertyNames,
const uno::Sequence< uno::Any >& rValues)
@@ -566,12 +616,9 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
throw uno::RuntimeException();
}
- SwSection aSection(CONTENT_SECTION, aEmptyStr);
- SwSection *const pSect = (pFmt) ? pFmt->GetSection() : 0;
- if (pFmt)
- {
- aSection = *pSect;
- }
+ ::std::auto_ptr<SwSectionData> const pSectionData(
+ (pFmt) ? new SwSectionData(*pFmt->GetSection()) : 0);
+
OUString const*const pPropertyNames = rPropertyNames.getConstArray();
uno::Any const*const pValues = rValues.getConstArray();
::std::auto_ptr<SfxItemSet> pItemSet;
@@ -609,7 +656,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetCondition(uTmp);
+ pSectionData->SetCondition(uTmp);
}
}
break;
@@ -637,16 +684,16 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- String sLinkFileName(aSection.GetLinkFileName());
- if (aSection.GetType() != DDE_LINK_SECTION)
+ String sLinkFileName(pSectionData->GetLinkFileName());
+ if (pSectionData->GetType() != DDE_LINK_SECTION)
{
sLinkFileName = sfx2::cTokenSeperator;
sLinkFileName += sfx2::cTokenSeperator;
- aSection.SetType(DDE_LINK_SECTION);
+ pSectionData->SetType(DDE_LINK_SECTION);
}
sLinkFileName.SetToken(pEntry->nWID - WID_SECT_DDE_TYPE,
sfx2::cTokenSeperator, sTmp);
- aSection.SetLinkFileName(sLinkFileName);
+ pSectionData->SetLinkFileName(sLinkFileName);
}
}
break;
@@ -683,10 +730,10 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- if (aSection.GetType() != FILE_LINK_SECTION &&
+ if (pSectionData->GetType() != FILE_LINK_SECTION &&
aLink.FileURL.getLength())
{
- aSection.SetType(FILE_LINK_SECTION);
+ pSectionData->SetType(FILE_LINK_SECTION);
}
::rtl::OUStringBuffer sFileNameBuf;
if (aLink.FileURL.getLength())
@@ -700,14 +747,14 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
sFileNameBuf.append(aLink.FilterName);
sFileNameBuf.append(sfx2::cTokenSeperator);
sFileNameBuf.append(
- aSection.GetLinkFileName().GetToken(2,
+ pSectionData->GetLinkFileName().GetToken(2,
sfx2::cTokenSeperator));
const ::rtl::OUString sFileName(
sFileNameBuf.makeStringAndClear());
- aSection.SetLinkFileName(sFileName);
+ pSectionData->SetLinkFileName(sFileName);
if (sFileName.getLength() < 3)
{
- aSection.SetType(CONTENT_SECTION);
+ pSectionData->SetType(CONTENT_SECTION);
}
}
}
@@ -723,21 +770,21 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- if (aSection.GetType() != FILE_LINK_SECTION &&
+ if (pSectionData->GetType() != FILE_LINK_SECTION &&
sLink.getLength())
{
- aSection.SetType(FILE_LINK_SECTION);
+ pSectionData->SetType(FILE_LINK_SECTION);
}
- String sSectLink(aSection.GetLinkFileName());
+ String sSectLink(pSectionData->GetLinkFileName());
while (3 < sSectLink.GetTokenCount(sfx2::cTokenSeperator))
{
sSectLink += sfx2::cTokenSeperator;
}
sSectLink.SetToken(2, sfx2::cTokenSeperator, sLink);
- aSection.SetLinkFileName(sSectLink);
+ pSectionData->SetLinkFileName(sSectLink);
if (sSectLink.Len() < 3)
{
- aSection.SetType(CONTENT_SECTION);
+ pSectionData->SetType(CONTENT_SECTION);
}
}
}
@@ -755,7 +802,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetHidden(!bVal);
+ pSectionData->SetHidden(!bVal);
}
}
break;
@@ -772,9 +819,9 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- if (aSection.GetCondition().Len() != 0)
+ if (pSectionData->GetCondition().Len() != 0)
{
- aSection.SetCondHidden(!bVal);
+ pSectionData->SetCondHidden(!bVal);
}
}
}
@@ -792,7 +839,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetProtect(bVal);
+ pSectionData->SetProtectFlag(bVal);
}
}
break;
@@ -810,7 +857,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetEditInReadonly(bVal);
+ pSectionData->SetEditInReadonlyFlag(bVal);
}
}
// <--
@@ -825,7 +872,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetPasswd(aSeq);
+ pSectionData->SetPassword(aSeq);
}
}
break;
@@ -925,38 +972,8 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
}
- if (pFmt)
- {
- SwDoc* pDoc = pFmt->GetDoc();
- const SwSectionFmts& rFmts = pDoc->GetSections();
- UnoActionContext aContext(pDoc);
- for (sal_uInt16 i = 0; i < rFmts.Count(); i++)
- {
- if (rFmts[i]->GetSection()->GetName() == pSect->GetName())
- {
- pDoc->ChgSection(i, aSection, pItemSet.get(),
- pDoc->IsInReading());
- {
- // temporarily remove actions to allow cursor update
- UnoActionRemoveContext aRemoveContext( pDoc );
- }
-
- //SwSection* pSect = pFmt->GetSection();
- if (bLinkModeChanged && pSect->GetType() == DDE_LINK_SECTION)
- {
- // set update type; needs an established link
- if (!pSect->IsConnected())
- {
- pSect->CreateLink(CREATE_CONNECT);
- }
- pSect->SetUpdateType( static_cast< USHORT >((bLinkMode) ?
- sfx2::LINKUPDATE_ALWAYS : sfx2::LINKUPDATE_ONCALL) );
- }
- // section found and processed: break from loop
- break;
- }
- }
- }
+ lcl_UpdateSection(pFmt, pSectionData, pItemSet, bLinkModeChanged,
+ bLinkMode);
}
void SAL_CALL
@@ -1147,7 +1164,8 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
{
if (pFmt)
{
- pRet[nProperty] <<= OUString(pFmt->GetSection()->GetName());
+ pRet[nProperty] <<=
+ OUString(pFmt->GetSection()->GetSectionName());
}
}
break;
@@ -1222,7 +1240,7 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
case WID_SECT_PASSWORD:
{
pRet[nProperty] <<= (m_bIsDescriptor)
- ? m_pProps->m_Password : pSect->GetPasswd();
+ ? m_pProps->m_Password : pSect->GetPassword();
}
break;
default:
@@ -1562,12 +1580,6 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
throw uno::RuntimeException();
}
- SwSection aSection(CONTENT_SECTION, aEmptyStr);
- SwSection *const pSect = (pFmt) ? pFmt->GetSection() : 0;
- if (pFmt)
- {
- aSection = *pSect;
- }
SfxItemPropertySimpleEntry const*const pEntry =
m_pImpl->m_rPropSet.getPropertyMap()->getByName(rPropertyName);
if (!pEntry)
@@ -1584,7 +1596,12 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
static_cast<cppu::OWeakObject *>(this));
}
+ ::std::auto_ptr<SwSectionData> const pSectionData(
+ (pFmt) ? new SwSectionData(*pFmt->GetSection()) : 0);
+
::std::auto_ptr<SfxItemSet> pNewAttrSet;
+ bool bLinkModeChanged = false;
+
switch (pEntry->nWID)
{
case WID_SECT_CONDITION:
@@ -1595,7 +1612,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetCondition(aEmptyStr);
+ pSectionData->SetCondition(aEmptyStr);
}
}
break;
@@ -1604,10 +1621,27 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
case WID_SECT_DDE_ELEMENT :
case WID_SECT_LINK :
case WID_SECT_REGION :
- aSection.SetType(CONTENT_SECTION);
+ if (m_pImpl->m_bIsDescriptor)
+ {
+ m_pImpl->m_pProps->m_bDDE = false;
+ m_pImpl->m_pProps->m_sLinkFileName = ::rtl::OUString();
+ m_pImpl->m_pProps->m_sSectionRegion = ::rtl::OUString();
+ m_pImpl->m_pProps->m_sSectionFilter = ::rtl::OUString();
+ }
+ else
+ {
+ pSectionData->SetType(CONTENT_SECTION);
+ }
break;
case WID_SECT_DDE_AUTOUPDATE:
- aSection.SetUpdateType(sfx2::LINKUPDATE_ALWAYS);
+ if (m_pImpl->m_bIsDescriptor)
+ {
+ m_pImpl->m_pProps->m_bUpdateType = true;
+ }
+ else
+ {
+ bLinkModeChanged = true;
+ }
break;
case WID_SECT_VISIBLE :
{
@@ -1617,7 +1651,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetHidden(FALSE);
+ pSectionData->SetHidden(false);
}
}
break;
@@ -1629,7 +1663,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetProtect(FALSE);
+ pSectionData->SetProtectFlag(false);
}
}
break;
@@ -1642,7 +1676,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetEditInReadonly(FALSE);
+ pSectionData->SetEditInReadonlyFlag(false);
}
}
break;
@@ -1678,25 +1712,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
}
- if (pFmt)
- {
- SwDoc *const pDoc = pFmt->GetDoc();
- const SwSectionFmts& rFmts = pDoc->GetSections();
- UnoActionContext aContext(pDoc);
- for (sal_uInt16 i = 0; i < rFmts.Count(); i++)
- {
- if (rFmts[i]->GetSection()->GetName() == pSect->GetName())
- {
- pDoc->ChgSection(i, aSection, pNewAttrSet.get(),
- pDoc->IsInReading());
- {
- // temporarily remove actions to allow cursor update
- UnoActionRemoveContext aRemoveContext( pDoc );
- }
- break;
- }
- }
- }
+ lcl_UpdateSection(pFmt, pSectionData, pNewAttrSet, bLinkModeChanged);
}
/*-- 08.11.00 10:47:56---------------------------------------------------
@@ -1737,7 +1753,7 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
case WID_SECT_DDE_AUTOUPDATE:
case WID_SECT_VISIBLE :
{
- sal_Bool bTemp = TRUE;
+ sal_Bool bTemp = sal_True;
aRet.setValue( &bTemp, ::getCppuBooleanType());
}
break;
@@ -1746,7 +1762,7 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
case WID_SECT_EDIT_IN_READONLY:
// <--
{
- sal_Bool bTemp = FALSE;
+ sal_Bool bTemp = sal_False;
aRet.setValue( &bTemp, ::getCppuBooleanType());
}
break;
@@ -1778,7 +1794,7 @@ OUString SAL_CALL SwXTextSection::getName() throw (uno::RuntimeException)
SwSectionFmt const*const pFmt = m_pImpl->GetSectionFmt();
if(pFmt)
{
- sRet = pFmt->GetSection()->GetName();
+ sRet = pFmt->GetSection()->GetSectionName();
}
else if (m_pImpl->m_bIsDescriptor)
{
@@ -1801,11 +1817,10 @@ throw (uno::RuntimeException)
SwSectionFmt *const pFmt = m_pImpl->GetSectionFmt();
if(pFmt)
{
- SwSection aSection(CONTENT_SECTION, aEmptyStr);
SwSection *const pSect = pFmt->GetSection();
- aSection = *pSect;
+ SwSectionData aSection(*pSect);
String sNewName(rName);
- aSection.SetName(sNewName);
+ aSection.SetSectionName(sNewName);
const SwSectionFmts& rFmts = pFmt->GetDoc()->GetSections();
sal_uInt16 nApplyPos = USHRT_MAX;
@@ -1815,7 +1830,7 @@ throw (uno::RuntimeException)
{
nApplyPos = i;
}
- else if(sNewName == rFmts[i]->GetSection()->GetName())
+ else if (sNewName == rFmts[i]->GetSection()->GetSectionName())
{
throw uno::RuntimeException();
}
@@ -1824,7 +1839,7 @@ throw (uno::RuntimeException)
{
{
UnoActionContext aContext(pFmt->GetDoc());
- pFmt->GetDoc()->ChgSection( nApplyPos, aSection);
+ pFmt->GetDoc()->UpdateSection(nApplyPos, aSection);
}
{
// temporarily remove actions to allow cursor update
@@ -1879,3 +1894,22 @@ SwXTextSection::getSupportedServiceNames() throw (uno::RuntimeException)
g_nServicesTextSection, g_ServicesTextSection);
}
+
+// MetadatableMixin
+::sfx2::Metadatable* SwXTextSection::GetCoreObject()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ return pSectionFmt;
+}
+
+uno::Reference<frame::XModel> SwXTextSection::GetModel()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ if (pSectionFmt)
+ {
+ SwDocShell const*const pShell( pSectionFmt->GetDoc()->GetDocShell() );
+ return (pShell) ? pShell->GetModel() : 0;
+ }
+ return 0;
+}
+
diff --git a/sw/source/core/view/viewimp.cxx b/sw/source/core/view/viewimp.cxx
index 04bc229627a9..b2d91c48f598 100644
--- a/sw/source/core/view/viewimp.cxx
+++ b/sw/source/core/view/viewimp.cxx
@@ -430,7 +430,7 @@ void SwViewImp::DisposeAccessible( const SwFrm *pFrm,
do
{
if( pTmp->Imp()->IsAccessible() )
- pTmp->Imp()->GetAccessibleMap().Dispose( pFrm, pObj, bRecursive );
+ pTmp->Imp()->GetAccessibleMap().Dispose( pFrm, pObj, 0, bRecursive );
pTmp = (ViewShell *)pTmp->GetNext();
} while ( pTmp != pVSh );
}
@@ -444,7 +444,7 @@ void SwViewImp::MoveAccessible( const SwFrm *pFrm, const SdrObject *pObj,
do
{
if( pTmp->Imp()->IsAccessible() )
- pTmp->Imp()->GetAccessibleMap().InvalidatePosOrSize( pFrm, pObj,
+ pTmp->Imp()->GetAccessibleMap().InvalidatePosOrSize( pFrm, pObj, 0,
rOldFrm );
pTmp = (ViewShell *)pTmp->GetNext();
} while ( pTmp != pVSh );
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 08aae426fd8c..156447fda9da 100755
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -1231,16 +1231,23 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
SwTwips nPageLeft = 0;
SwTwips nPageRight = 0;
- if (pPage->MarginSide())
+ switch ( pPage->SidebarPosition() )
{
- nPageLeft = aPageRect.Left() - nBorderWidth - nSidebarWidth;
- nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth;
- }
- else
- {
- // OD 03.03.2003 #107927# - use correct datatype
- nPageLeft = aPageRect.Left() - nBorderWidth;
- nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth + nSidebarWidth;
+ case sw::sidebarwindows::SIDEBAR_LEFT:
+ {
+ nPageLeft = aPageRect.Left() - nBorderWidth - nSidebarWidth;
+ nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth;
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_RIGHT:
+ {
+ nPageLeft = aPageRect.Left() - nBorderWidth;
+ nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth + nSidebarWidth;
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_NONE:
+ // nothing to do
+ break;
}
if( nPageLeft < nMinLeft )
nMinLeft = nPageLeft;
@@ -1310,6 +1317,15 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
}
GetWin()->Update();
+ // --> OD 2010-02-11 #i88070#
+ if ( pPostItMgr )
+ {
+ pPostItMgr->Rescale();
+ pPostItMgr->CalcRects();
+ pPostItMgr->LayoutPostIts();
+ }
+ // <--
+
if ( !bScrolled && pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
pPostItMgr->CorrectPositions();
@@ -1708,7 +1724,8 @@ void ViewShell::PaintDesktop( const SwRect &rRect )
aPageRect.SSize() = rFormatPage.Frm().SSize();
}
- const bool bSidebarRight = !static_cast<const SwPageFrm*>(pPage)->MarginSide();
+ const bool bSidebarRight =
+ static_cast<const SwPageFrm*>(pPage)->SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT;
aPageRect.Pos().X() -= bSidebarRight ? 0 : nSidebarWidth;
aPageRect.SSize().Width() += nSidebarWidth;
@@ -2591,6 +2608,15 @@ void ViewShell::InvalidateAccessibleParaAttrs( const SwTxtFrm& rTxtFrm )
}
}
+SwAccessibleMap* ViewShell::GetAccessibleMap()
+{
+ if ( Imp()->IsAccessible() )
+ {
+ return &(Imp()->GetAccessibleMap());
+ }
+
+ return 0;
+}
/* -----------------------------06.05.2002 13:23------------------------------
---------------------------------------------------------------------------*/
diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx
index 3ed96c5a5954..ac2f348532e8 100644
--- a/sw/source/filter/html/htmlsect.cxx
+++ b/sw/source/filter/html/htmlsect.cxx
@@ -28,26 +28,19 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <rtl/uri.hxx>
-
-
-#include "hintids.hxx"
-
-#ifndef _APP_HXX //autogen
+#include <svl/urihelper.hxx>
#include <vcl/svapp.hxx>
-#endif
-#ifndef _WRKWIN_HXX //autogen
#include <vcl/wrkwin.hxx>
-#endif
#include <editeng/adjitem.hxx>
#include <editeng/ulspitem.hxx>
#include <editeng/brkitem.hxx>
#include <svtools/htmltokn.h>
-#ifndef _HTMLKYWD_H
#include <svtools/htmlkywd.hxx>
-#endif
#include <sfx2/linkmgr.hxx>
-#include <rtl/uri.hxx>
+
+#include "hintids.hxx"
#include <fmtornt.hxx>
#include <fmthdft.hxx>
#include <fmtcntnt.hxx>
@@ -69,7 +62,6 @@
#include "viewsh.hxx"
#include "swcss1.hxx"
#include "swhtml.hxx"
-#include <svl/urihelper.hxx>
#define CONTEXT_FLAGS_MULTICOL (HTML_CNTXT_STRIP_PARA | \
HTML_CNTXT_KEEP_NUMRULE | \
@@ -321,12 +313,12 @@ void SwHTMLParser::NewDivision( int nToken )
aHRef = aURL;
}
- SwSection aSection( aHRef.Len() ? FILE_LINK_SECTION
+ SwSectionData aSection( (aHRef.Len()) ? FILE_LINK_SECTION
: CONTENT_SECTION, aName );
if( aHRef.Len() )
{
aSection.SetLinkFileName( aHRef );
- aSection.SetProtect();
+ aSection.SetProtectFlag(true);
}
SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
@@ -348,7 +340,7 @@ void SwHTMLParser::NewDivision( int nToken )
aItemSet.ClearItem( RES_FRAMEDIR );
}
- pDoc->InsertSwSection( *pPam, aSection, &aFrmItemSet, false );
+ pDoc->InsertSwSection( *pPam, aSection, 0, &aFrmItemSet, false );
// ggfs. einen Bereich anspringen
if( JUMPTO_REGION == eJumpTo && aName == sJmpMark )
@@ -708,7 +700,7 @@ void SwHTMLParser::NewMultiCol()
// Make section name unique.
String aName( pDoc->GetUniqueSectionName( aId.Len() ? &aId : 0 ) );
- SwSection aSection( CONTENT_SECTION, aName );
+ SwSectionData aSection( CONTENT_SECTION, aName );
SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
@@ -743,7 +735,7 @@ void SwHTMLParser::NewMultiCol()
aFrmItemSet.Put( *pItem );
aItemSet.ClearItem( RES_FRAMEDIR );
}
- pDoc->InsertSwSection( *pPam, aSection, &aFrmItemSet, false );
+ pDoc->InsertSwSection( *pPam, aSection, 0, &aFrmItemSet, false );
// Jump to section, if this is requested.
if( JUMPTO_REGION == eJumpTo && aName == sJmpMark )
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx
index d0b6a985b9f6..ab6dfd92554a 100644
--- a/sw/source/filter/html/wrthtml.cxx
+++ b/sw/source/filter/html/wrthtml.cxx
@@ -313,7 +313,8 @@ ULONG SwHTMLWriter::WriteStream()
// nur das Tag fuer die Section merken
ByteString aName;
- HTMLOutFuncs::ConvertStringToHTML( pSNd->GetSection().GetName(),
+ HTMLOutFuncs::ConvertStringToHTML(
+ pSNd->GetSection().GetSectionName(),
aName, eDestEnc, &aNonConvertableCharacters );
ByteString sOut( '<' );
@@ -541,7 +542,7 @@ void lcl_html_OutSectionStartTag( SwHTMLWriter& rHTMLWrt,
ByteString sOut( '<' );
sOut += pTag;
- const String& rName = rSection.GetName();
+ const String& rName = rSection.GetSectionName();
if( rName.Len() && !bContinued )
{
((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_id) += "=\"";
diff --git a/sw/source/filter/inc/fltshell.hxx b/sw/source/filter/inc/fltshell.hxx
index 60f43492dd7f..c511d4aab02a 100644
--- a/sw/source/filter/inc/fltshell.hxx
+++ b/sw/source/filter/inc/fltshell.hxx
@@ -255,14 +255,15 @@ public:
class SwFltSection : public SfxPoolItem
{
- SwSection* pSection;
+ SwSectionData * m_pSection;
+
public:
- SwFltSection( SwSection* pSect );
+ SwFltSection( SwSectionData *const pSect );
SwFltSection( const SwFltSection& );
// "pure virtual Methoden" vom SfxPoolItem
virtual int operator==(const SfxPoolItem&) const;
virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
- SwSection* GetSection() { return pSection; }
+ SwSectionData * GetSectionData() { return m_pSection; }
};
// Der WWEndStack verhaelt sich wie der WWControlStck, nur dass die Attribute
// auf ihm bis ans Ende des Dokuments gehortet werden, falls auf sie noch
diff --git a/sw/source/filter/rtf/rtffly.cxx b/sw/source/filter/rtf/rtffly.cxx
index 9d3e7bc1b47e..76adc1197305 100644
--- a/sw/source/filter/rtf/rtffly.cxx
+++ b/sw/source/filter/rtf/rtffly.cxx
@@ -1169,8 +1169,8 @@ void SwRTFParser::ReadFly( int nToken, SfxItemSet* pSet )
SwTxtNode* pTxtNd = pFlySave->nSttNd.GetNode().GetTxtNode();
SwTxtFlyCnt* pFlyCnt = 0;
if( 1 == pTxtNd->GetTxt().Len() &&
- 0 != ( pFlyCnt = (SwTxtFlyCnt*)pTxtNd->GetTxtAttr(
- 0, RES_TXTATR_FLYCNT )) &&
+ 0 != (pFlyCnt = static_cast<SwTxtFlyCnt*>(
+ pTxtNd->GetTxtAttrForCharAt(0, RES_TXTATR_FLYCNT))) &&
pFlyCnt->GetFlyCnt().GetFrmFmt() )
{
// then move the content into the surrounded fly
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
index 125caa487f42..5a5e7a65e0a7 100644
--- a/sw/source/filter/rtf/swparrtf.cxx
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -829,7 +829,8 @@ void rtfSections::SetHdFt(rtfSection &rSection)
SwSectionFmt *rtfSections::InsertSection(SwPaM& rMyPaM, rtfSection &rSection)
{
- SwSection aSection(CONTENT_SECTION, mrReader.pDoc->GetUniqueSectionName());
+ SwSectionData aSectionData(CONTENT_SECTION,
+ mrReader.pDoc->GetUniqueSectionName());
SfxItemSet aSet( mrReader.pDoc->GetAttrPool(), aFrmFmtSetRange );
@@ -838,7 +839,7 @@ SwSectionFmt *rtfSections::InsertSection(SwPaM& rMyPaM, rtfSection &rSection)
nRTLPgn ? FRMDIR_HORI_RIGHT_TOP : FRMDIR_HORI_LEFT_TOP, RES_FRAMEDIR));
rSection.mpSection =
- mrReader.pDoc->InsertSwSection( rMyPaM, aSection, &aSet );
+ mrReader.pDoc->InsertSwSection( rMyPaM, aSectionData, 0, &aSet );
ASSERT(rSection.mpSection, "section not inserted!");
if (!rSection.mpSection)
return 0;
diff --git a/sw/source/filter/ww1/fltshell.cxx b/sw/source/filter/ww1/fltshell.cxx
index abe41737438b..2cf1ca325a5b 100644
--- a/sw/source/filter/ww1/fltshell.cxx
+++ b/sw/source/filter/ww1/fltshell.cxx
@@ -559,9 +559,9 @@ void SwFltControlStack::SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry*
case RES_FLTR_SECTION:
MakePoint(pEntry, pDoc, aRegion); // bislang immer Point==Mark
pDoc->InsertSwSection(aRegion,
- *(static_cast<SwFltSection*>(pEntry->pAttr))->GetSection(),
- 0, false);
- delete(((SwFltSection*)pEntry->pAttr)->GetSection());
+ *(static_cast<SwFltSection*>(pEntry->pAttr))->GetSectionData(),
+ 0, 0, false);
+ delete (((SwFltSection*)pEntry->pAttr)->GetSectionData());
break;
case RES_FLTR_REDLINE:
{
@@ -865,19 +865,21 @@ SfxPoolItem* SwFltTOX::Clone(SfxItemPool*) const
//------ hier stehen die Methoden von SwFltSwSection -----------
-SwFltSection::SwFltSection(SwSection *pSect) :
- SfxPoolItem(RES_FLTR_SECTION), pSection(pSect)
+SwFltSection::SwFltSection(SwSectionData *const pSect)
+ : SfxPoolItem(RES_FLTR_SECTION)
+ , m_pSection(pSect)
{
}
-SwFltSection::SwFltSection(const SwFltSection& rCpy) :
- SfxPoolItem(RES_FLTR_SECTION), pSection(rCpy.pSection)
+SwFltSection::SwFltSection(const SwFltSection& rCpy)
+ : SfxPoolItem(RES_FLTR_SECTION)
+ , m_pSection(rCpy.m_pSection)
{
}
int SwFltSection::operator==(const SfxPoolItem& rItem) const
{
- return pSection == ((SwFltSection&)rItem).pSection;
+ return m_pSection == ((SwFltSection&)rItem).m_pSection;
}
SfxPoolItem* __EXPORT SwFltSection::Clone(SfxItemPool*) const
@@ -962,9 +964,9 @@ SwFltShell::~SwFltShell()
SwDoc& rDoc = GetDoc();
// 1. SectionFmt und Section anlegen
SwSectionFmt* pSFmt = rDoc.MakeSectionFmt( 0 );
- SwSection aS( CONTENT_SECTION, String::CreateFromAscii(
+ SwSectionData aSectionData( CONTENT_SECTION, String::CreateFromAscii(
RTL_CONSTASCII_STRINGPARAM("PMW-Protect") ));
- aS.SetProtect( TRUE );
+ aSectionData.SetProtectFlag( true );
// 2. Start- und EndIdx suchen
const SwNode* pEndNd = &rDoc.GetNodes().GetEndOfContent();
SwNodeIndex aEndIdx( *pEndNd, -1L );
@@ -972,7 +974,8 @@ SwFltShell::~SwFltShell()
SwNodeIndex aSttIdx( *pSttNd, 1L ); // +1 -> hinter StartNode
// Section einfuegen
// Section einfuegen
- rDoc.GetNodes().InsertSection( aSttIdx, *pSFmt, aS, &aEndIdx, FALSE );
+ rDoc.GetNodes().InsertTextSection(
+ aSttIdx, *pSFmt, aSectionData, 0, &aEndIdx, false );
if( !IsFlagSet(SwFltControlStack::DONT_HARD_PROTECT) ){
SwDocShell* pDocSh = rDoc.GetDocShell();
@@ -1676,7 +1679,7 @@ SfxItemSet* SwFltOutBase::NewFlyDefaults()
return p;
}
-BOOL SwFltOutBase::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltOutBase::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/,
const SfxItemSet*
#ifdef DBG_UTIL
@@ -1728,7 +1731,7 @@ SwFrmFmt* SwFltOutDoc::MakeFly( RndStdIds eAnchor, SfxItemSet* pSet )
return pFly;
}
-BOOL SwFltOutDoc::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltOutDoc::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/,
const SfxItemSet* pMoreAttrs /*= 0*/ )
@@ -1834,7 +1837,7 @@ void SwFltOutDoc::EndFly()
return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
}
-BOOL SwFltFormatCollection::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltFormatCollection::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/,
const SfxItemSet* pMoreAttrs /*= 0*/ )
@@ -1862,7 +1865,7 @@ BOOL SwFltFormatCollection::BeginStyleFly( SwFltOutDoc* pOutDoc )
// Flys in SwFltShell
//-----------------------------------------------------------------------------
-BOOL SwFltShell::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltShell::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/ )
{
@@ -1934,8 +1937,8 @@ void SwFltShell::BeginFootnote()
pSavedPos = new SwPosition(*pPaM->GetPoint());
pPaM->Move(fnMoveBackward, fnGoCntnt);
SwTxtNode* pTxt = pPaM->GetNode()->GetTxtNode();
- SwTxtAttr* pFN = pTxt->GetTxtAttr(pPaM->GetPoint()->nContent,
- RES_TXTATR_FTN);
+ SwTxtAttr *const pFN = pTxt->GetTxtAttrForCharAt(
+ pPaM->GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN);
if( !pFN ){ // Passiert z.B. bei Fussnote in Fly
ASSERT(pFN, "Probleme beim Anlegen des Fussnoten-Textes");
return;
diff --git a/sw/source/filter/ww1/w1filter.cxx b/sw/source/filter/ww1/w1filter.cxx
index 9ab5e84a6967..45e94726cddc 100644
--- a/sw/source/filter/ww1/w1filter.cxx
+++ b/sw/source/filter/ww1/w1filter.cxx
@@ -870,10 +870,10 @@ oncemore:
String aName( String::CreateFromAscii(
RTL_CONSTASCII_STRINGPARAM( "WW" )));
- SwSection* pSection = new SwSection( FILE_LINK_SECTION,
+ SwSectionData * pSection = new SwSectionData( FILE_LINK_SECTION,
rOut.GetDoc().GetUniqueSectionName( &aStr ) );
pSection->SetLinkFileName( aFName );
- pSection->SetProtect( TRUE );
+ pSection->SetProtectFlag( true );
rOut << SwFltSection( pSection );
rOut.EndItem( RES_FLTR_SECTION );
rOut.NextParagraph();
diff --git a/sw/source/filter/ww8/WW8Sttbf.cxx b/sw/source/filter/ww8/WW8Sttbf.cxx
index d3394937bf61..796670385bd4 100644
--- a/sw/source/filter/ww8/WW8Sttbf.cxx
+++ b/sw/source/filter/ww8/WW8Sttbf.cxx
@@ -29,6 +29,7 @@
#include <iostream>
#include <dbgoutsw.hxx>
#include "WW8Sttbf.hxx"
+#include <cstdio>
namespace ww8
{
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
index 23fa8ecb2c34..9e114aa11b0a 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -35,6 +35,10 @@
#include <algorithm>
#include <functional>
#include <iostream>
+#if OSL_DEBUG_LEVEL > 0
+# include <cstdio>
+#endif
+
#include <hintids.hxx>
#include <tools/urlobj.hxx>
#include <editeng/boxitem.hxx>
@@ -102,7 +106,7 @@
#include <ndgrf.hxx>
#include <ndole.hxx>
-
+#include <cstdio>
using namespace ::com::sun::star;
using namespace ::com::sun::star::i18n;
diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
index 64e70d40dfdc..3d200268731d 100644
--- a/sw/source/filter/ww8/wrtww8gr.cxx
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -30,6 +30,10 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+#if OSL_DEBUG_LEVEL > 0
+# include <cstdio>
+#endif
+
#include <com/sun/star/embed/XEmbedPersist.hpp>
#include <com/sun/star/embed/Aspects.hpp>
#include <rtl/math.hxx>
@@ -73,6 +77,7 @@
#include "escher.hxx"
#include "docsh.hxx"
+#include <cstdio>
using namespace ::com::sun::star;
using namespace nsFieldFlags;
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index a290e8f30790..3cf85185b434 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -3245,7 +3245,7 @@ SwWW8ImplReader::SwWW8ImplReader(BYTE nVersionPara, SvStorage* pStorage,
nSwNumLevel = nWwNumType = 0xff;
pTableDesc = 0;
pNumOlst = 0;
- pNode_FLY_AT_CNTNT = 0;
+ pNode_FLY_AT_PARA = 0;
pDrawModel = 0;
pDrawPg = 0;
mpDrawEditEngine = 0;
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index 099ecca83d6a..0473f3c1431e 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -977,7 +977,7 @@ private:
ANLDRuleMap maANLDRules;
WW8_OLST* pNumOlst; // Gliederung im Text
- SwNode* pNode_FLY_AT_CNTNT; // set: WW8SwFlyPara() read: CreateSwTable()
+ SwNode* pNode_FLY_AT_PARA; // set: WW8SwFlyPara() read: CreateSwTable()
SdrModel* pDrawModel;
SdrPage* pDrawPg;
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index 255b17e04638..93a39b1c390c 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -2354,11 +2354,13 @@ eF_ResT SwWW8ImplReader::Read_F_IncludeText( WW8FieldDesc* /*pF*/, String& rStr
*/
SwPosition aTmpPos(*pPaM->GetPoint());
- SwSection aSection(FILE_LINK_SECTION, maSectionNameGenerator.UniqueName());
+ SwSectionData aSection(FILE_LINK_SECTION,
+ maSectionNameGenerator.UniqueName());
aSection.SetLinkFileName( aPara );
- aSection.SetProtect(true);
+ aSection.SetProtectFlag(true);
- SwSection*const pSection = rDoc.InsertSwSection(*pPaM, aSection, 0, false);
+ SwSection *const pSection =
+ rDoc.InsertSwSection(*pPaM, aSection, 0, 0, false);
ASSERT(pSection, "no section inserted");
if (!pSection)
return FLD_TEXT;
diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx
index 5c10a7b005bd..6dacf0d126fe 100644
--- a/sw/source/filter/ww8/ww8par6.cxx
+++ b/sw/source/filter/ww8/ww8par6.cxx
@@ -672,7 +672,8 @@ void wwSectionManager::SetPageULSpaceItems(SwFrmFmt &rFmt,
SwSectionFmt *wwSectionManager::InsertSection(
SwPaM& rMyPaM, wwSection &rSection)
{
- SwSection aSection( CONTENT_SECTION, mrReader.rDoc.GetUniqueSectionName() );
+ SwSectionData aSection( CONTENT_SECTION,
+ mrReader.rDoc.GetUniqueSectionName() );
SfxItemSet aSet( mrReader.rDoc.GetAttrPool(), aFrmFmtSetRange );
@@ -685,10 +686,10 @@ SwSectionFmt *wwSectionManager::InsertSection(
if (0 == mrReader.pWDop->epc)
aSet.Put( SwFmtEndAtTxtEnd(FTNEND_ATTXTEND));
- aSection.SetProtect(SectionIsProtected(rSection));
+ aSection.SetProtectFlag(SectionIsProtected(rSection));
rSection.mpSection =
- mrReader.rDoc.InsertSwSection( rMyPaM, aSection, &aSet );
+ mrReader.rDoc.InsertSwSection( rMyPaM, aSection, 0, & aSet );
ASSERT(rSection.mpSection, "section not inserted!");
if (!rSection.mpSection)
return 0;
@@ -836,12 +837,12 @@ void wwSectionManager::CreateSep(const long nTxtPos, bool /*bMustHaveBreak*/)
pWkb->Get(nTest, pData);
String sSectionName = mrReader.aLinkStringMap[SVBT16ToShort( ((WW8_WKB*)pData)->nLinkId) ];
mrReader.ConvertFFileName(sSectionName, sSectionName);
- SwSection aSection(FILE_LINK_SECTION, sSectionName);
+ SwSectionData aSection(FILE_LINK_SECTION, sSectionName);
aSection.SetLinkFileName( sSectionName );
- aSection.SetProtect(true);
+ aSection.SetProtectFlag(true);
// --> CMC, OD 2004-06-18 #i19922# improvement:
// return value of method <Insert> not used.
- mrReader.rDoc.InsertSwSection(*mrReader.pPaM, aSection, 0, false);
+ mrReader.rDoc.InsertSwSection(*mrReader.pPaM, aSection, 0, 0, false);
}
wwSection aLastSection(*mrReader.pPaM->GetPoint());
diff --git a/sw/source/filter/xml/xmltbli.cxx b/sw/source/filter/xml/xmltbli.cxx
index 774297c7540d..4b6af56066fc 100644
--- a/sw/source/filter/xml/xmltbli.cxx
+++ b/sw/source/filter/xml/xmltbli.cxx
@@ -457,7 +457,7 @@ SwXMLTableCellContext_Impl::SwXMLTableCellContext_Impl(
bHasTextContent( sal_False ),
bHasTableContent( sal_False )
{
- sSaveParaDefault = GetImport().GetTextImport()->sCellParaStyleDefault;
+ sSaveParaDefault = GetImport().GetTextImport()->GetCellParaStyleDefault();
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
{
@@ -477,7 +477,7 @@ SwXMLTableCellContext_Impl::SwXMLTableCellContext_Impl(
break;
case XML_TOK_TABLE_STYLE_NAME:
aStyleName = rValue;
- GetImport().GetTextImport()->sCellParaStyleDefault = rValue;
+ GetImport().GetTextImport()->SetCellParaStyleDefault(rValue);
break;
case XML_TOK_TABLE_NUM_COLS_SPANNED:
nColSpan = (sal_uInt32)rValue.toInt32();
@@ -715,7 +715,7 @@ void SwXMLTableCellContext_Impl::EndElement()
}
}
}
- GetImport().GetTextImport()->sCellParaStyleDefault = sSaveParaDefault;
+ GetImport().GetTextImport()->SetCellParaStyleDefault(sSaveParaDefault);
}
// ---------------------------------------------------------------------
diff --git a/sw/source/ui/app/applab.cxx b/sw/source/ui/app/applab.cxx
index 04fbebc865c8..41f055f86050 100644
--- a/sw/source/ui/app/applab.cxx
+++ b/sw/source/ui/app/applab.cxx
@@ -378,19 +378,20 @@ static sal_uInt16 nBCTitleNo = 0;
else
pSh->SetMark(); // set only the mark
- SwSection aSect( CONTENT_SECTION,
- String::CreateFromAscii(MASTER_LABEL));
+ SwSectionData aSect(CONTENT_SECTION,
+ String::CreateFromAscii(MASTER_LABEL));
pSh->InsertSection(aSect);
}
}
else if (rItem.bSynchron)
{
- SwSection aSect(FILE_LINK_SECTION, pSh->GetUniqueSectionName());
+ SwSectionData aSect(FILE_LINK_SECTION,
+ pSh->GetUniqueSectionName());
String sLinkName(sfx2::cTokenSeperator);
sLinkName += sfx2::cTokenSeperator;
sLinkName += String::CreateFromAscii(MASTER_LABEL);
aSect.SetLinkFileName(sLinkName);
- aSect.SetProtect();
+ aSect.SetProtectFlag(true);
pSh->Insert(aDotStr); // Dummytext zum Zuweisen der Section
pSh->SttDoc();
pSh->EndDoc(sal_True); // Alles im Rahmen selektieren
diff --git a/sw/source/ui/app/docsh.cxx b/sw/source/ui/app/docsh.cxx
index 1f932e6a93bd..34ccac06a256 100644
--- a/sw/source/ui/app/docsh.cxx
+++ b/sw/source/ui/app/docsh.cxx
@@ -69,7 +69,6 @@
#include <view.hxx> // fuer die aktuelle Sicht
#include <edtwin.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
#include <wrtsh.hxx> // Verbindung zur Core
#include <docsh.hxx> // Dokumenterzeugung
#include <basesh.hxx>
@@ -429,8 +428,12 @@ sal_Bool SwDocShell::SaveAs( SfxMedium& rMedium )
pView->GetEditWin().StopQuickHelp();
//#i91811# mod if we have an active margin window, write back the text
- if (pView && pView->GetPostItMgr() && pView->GetPostItMgr()->GetActivePostIt())
- pView->GetPostItMgr()->GetActivePostIt()->UpdateData();
+ if ( pView &&
+ pView->GetPostItMgr() &&
+ pView->GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ pView->GetPostItMgr()->UpdateDataOnActiveSidebarWin();
+ }
if( pDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) &&
!pDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS) )
@@ -575,8 +578,12 @@ BOOL SwDocShell::ConvertTo( SfxMedium& rMedium )
pView->GetEditWin().StopQuickHelp();
//#i91811# mod if we have an active margin window, write back the text
- if (pView && pView->GetPostItMgr() && pView->GetPostItMgr()->GetActivePostIt())
- pView->GetPostItMgr()->GetActivePostIt()->UpdateData();
+ if ( pView &&
+ pView->GetPostItMgr() &&
+ pView->GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ pView->GetPostItMgr()->UpdateDataOnActiveSidebarWin();
+ }
ULONG nVBWarning = 0;
diff --git a/sw/source/ui/dialog/regionsw.cxx b/sw/source/ui/dialog/regionsw.cxx
index ef9e8f4f85de..8a4304bcd5a9 100644
--- a/sw/source/ui/dialog/regionsw.cxx
+++ b/sw/source/ui/dialog/regionsw.cxx
@@ -117,7 +117,7 @@ void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
else
aTmpStr = rSh.GetUniqueSectionName();
- SwSection aSection(CONTENT_SECTION,aTmpStr);
+ SwSectionData aSection(CONTENT_SECTION, aTmpStr);
rReq.SetReturnValue(SfxStringItem(FN_INSERT_REGION, aTmpStr));
aSet.Put( *pSet );
@@ -153,10 +153,10 @@ void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
(BOOL)((const SfxBoolItem *)pItem)->GetValue():FALSE;
// <--
- aSection.SetProtect(bProtect);
+ aSection.SetProtectFlag(bProtect);
aSection.SetHidden(bHidden);
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSection.SetEditInReadonly(bEditInReadonly);
+ aSection.SetEditInReadonlyFlag(bEditInReadonly);
// <--
if(SFX_ITEM_SET ==
@@ -193,9 +193,10 @@ void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
}
}
-IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection*, pSect )
+IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSectionData*, pSect )
{
- if( pSect )
+ ::std::auto_ptr<SwSectionData> pSectionData(pSect);
+ if (pSectionData.get())
{
SfxItemSet aSet(pThis->GetView().GetPool(),
RES_COL, RES_COL,
@@ -214,10 +215,9 @@ IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection*, pSect )
AbstractInsertSectionTabDialog* aTabDlg = pFact->CreateInsertSectionTabDialog( DLG_INSERT_SECTION,
&pThis->GetView().GetViewFrame()->GetWindow(),aSet , *pThis);
DBG_ASSERT(aTabDlg, "Dialogdiet fail!");
- aTabDlg->SetSection(*pSect);
+ aTabDlg->SetSectionData(*pSectionData);
aTabDlg->Execute();
- delete pSect;
delete aTabDlg;
}
return 0;
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index bdc3a320dcd6..8447489e5b03 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -566,9 +566,10 @@ void AbstractEditRegionDlg_Impl::SelectSection(const String& rSectionName)
}
// AbstractEditRegionDlg_Impl end
//AbstractInsertSectionTabDialog_Impl begin
-void AbstractInsertSectionTabDialog_Impl::SetSection(const SwSection& rSect)
+void
+AbstractInsertSectionTabDialog_Impl::SetSectionData(SwSectionData const& rSect)
{
- pDlg->SetSection( rSect);
+ pDlg->SetSectionData(rSect);
}
// AbstractInsertSectionTabDialog_Impl end
diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx
index 462c571a06fa..5d8611d51f54 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -377,7 +377,7 @@ class SwInsertSectionTabDialog;
class AbstractInsertSectionTabDialog_Impl : public AbstractInsertSectionTabDialog
{
DECL_ABSTDLG_BASE(AbstractInsertSectionTabDialog_Impl,SwInsertSectionTabDialog)
- virtual void SetSection(const SwSection& rSect);
+ virtual void SetSectionData(SwSectionData const& rSect);
};
//for SwInsertSectionTabDialog end
diff --git a/sw/source/ui/dialog/uiregionsw.cxx b/sw/source/ui/dialog/uiregionsw.cxx
index c1e6df5edbf5..b4151f6d1462 100644
--- a/sw/source/ui/dialog/uiregionsw.cxx
+++ b/sw/source/ui/dialog/uiregionsw.cxx
@@ -80,13 +80,12 @@
using namespace ::com::sun::star;
+
// sw/inc/docary.hxx
SV_IMPL_PTRARR( SwSectionFmts, SwSectionFmtPtr )
#define FILE_NAME_LENGTH 17
-SV_IMPL_OP_PTRARR_SORT( SectReprArr, SectReprPtr )
-
static void lcl_ReadSections( SfxMedium& rMedium, ComboBox& rBox );
void lcl_FillList( SwWrtShell& rSh, ComboBox& rSubRegions, ComboBox* pAvailNames, const SwSectionFmt* pNewFmt )
@@ -103,7 +102,8 @@ void lcl_FillList( SwWrtShell& rSh, ComboBox& rSubRegions, ComboBox* pAvailNames
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- String* pString = new String(pFmt->GetSection()->GetName());
+ String* pString =
+ new String(pFmt->GetSection()->GetSectionName());
if(pAvailNames)
pAvailNames->InsertEntry(*pString);
rSubRegions.InsertEntry(*pString);
@@ -123,7 +123,8 @@ void lcl_FillList( SwWrtShell& rSh, ComboBox& rSubRegions, ComboBox* pAvailNames
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- String* pString = new String(pFmt->GetSection()->GetName());
+ String* pString =
+ new String(pFmt->GetSection()->GetSectionName());
if(pAvailNames)
pAvailNames->InsertEntry(*pString);
rSubRegions.InsertEntry(*pString);
@@ -164,26 +165,82 @@ public:
Beschreibung: User Data Klasse fuer Bereichsinformationen
----------------------------------------------------------------------------*/
-SectRepr::SectRepr( USHORT nPos, SwSection& rSect ) :
- aSection( CONTENT_SECTION, aEmptyStr ),
- aBrush( RES_BACKGROUND ),
- aFrmDirItem( FRMDIR_ENVIRONMENT, RES_FRAMEDIR ),
- aLRSpaceItem( RES_LR_SPACE ),
- bSelected(FALSE)
+class SectRepr
+{
+private:
+ SwSectionData m_SectionData;
+ SwFmtCol m_Col;
+ SvxBrushItem m_Brush;
+ SwFmtFtnAtTxtEnd m_FtnNtAtEnd;
+ SwFmtEndAtTxtEnd m_EndNtAtEnd;
+ SwFmtNoBalancedColumns m_Balance;
+ SvxFrameDirectionItem m_FrmDirItem;
+ SvxLRSpaceItem m_LRSpaceItem;
+ USHORT m_nArrPos;
+ // zeigt an, ob evtl. Textinhalt im Bereich ist
+ bool m_bContent : 1;
+ // fuer Multiselektion erst markieren, dann mit der TreeListBox arbeiten!
+ bool m_bSelected : 1;
+ uno::Sequence<sal_Int8> m_TempPasswd;
+
+public:
+ SectRepr(USHORT nPos, SwSection& rSect);
+ bool operator==(SectRepr& rSectRef) const
+ { return m_nArrPos == rSectRef.GetArrPos(); }
+
+ bool operator< (SectRepr& rSectRef) const
+ { return m_nArrPos < rSectRef.GetArrPos(); }
+
+ SwSectionData & GetSectionData() { return m_SectionData; }
+ SwSectionData const&GetSectionData() const { return m_SectionData; }
+ SwFmtCol& GetCol() { return m_Col; }
+ SvxBrushItem& GetBackground() { return m_Brush; }
+ SwFmtFtnAtTxtEnd& GetFtnNtAtEnd() { return m_FtnNtAtEnd; }
+ SwFmtEndAtTxtEnd& GetEndNtAtEnd() { return m_EndNtAtEnd; }
+ SwFmtNoBalancedColumns& GetBalance() { return m_Balance; }
+ SvxFrameDirectionItem& GetFrmDir() { return m_FrmDirItem; }
+ SvxLRSpaceItem& GetLRSpace() { return m_LRSpaceItem; }
+
+ USHORT GetArrPos() const { return m_nArrPos; }
+ String GetFile() const;
+ String GetSubRegion() const;
+ void SetFile(String const& rFile);
+ void SetFilter(String const& rFilter);
+ void SetSubRegion(String const& rSubRegion);
+
+ bool IsContent() { return m_bContent; }
+ void SetContent(bool const bValue) { m_bContent = bValue; }
+
+ void SetSelected() { m_bSelected = true; }
+ bool IsSelected() const { return m_bSelected; }
+
+ uno::Sequence<sal_Int8> & GetTempPasswd() { return m_TempPasswd; }
+ void SetTempPasswd(const uno::Sequence<sal_Int8> & rPasswd)
+ { m_TempPasswd = rPasswd; }
+};
+
+
+SV_IMPL_OP_PTRARR_SORT( SectReprArr, SectReprPtr )
+
+SectRepr::SectRepr( USHORT nPos, SwSection& rSect )
+ : m_SectionData( rSect )
+ , m_Brush( RES_BACKGROUND )
+ , m_FrmDirItem( FRMDIR_ENVIRONMENT, RES_FRAMEDIR )
+ , m_LRSpaceItem( RES_LR_SPACE )
+ , m_nArrPos(nPos)
+ , m_bContent(m_SectionData.GetLinkFileName().Len() == 0)
+ , m_bSelected(false)
{
- aSection = rSect;
- bContent = aSection.GetLinkFileName().Len() == 0;
- nArrPos=nPos;
SwSectionFmt *pFmt = rSect.GetFmt();
if( pFmt )
{
- aCol = pFmt->GetCol();
- aBrush = pFmt->GetBackground();
- aFtnNtAtEnd = pFmt->GetFtnAtTxtEnd();
- aEndNtAtEnd = pFmt->GetEndAtTxtEnd();
- aBalance.SetValue(pFmt->GetBalancedColumns().GetValue());
- aFrmDirItem = pFmt->GetFrmDir();
- aLRSpaceItem = pFmt->GetLRSpace();
+ m_Col = pFmt->GetCol();
+ m_Brush = pFmt->GetBackground();
+ m_FtnNtAtEnd = pFmt->GetFtnAtTxtEnd();
+ m_EndNtAtEnd = pFmt->GetEndAtTxtEnd();
+ m_Balance.SetValue(pFmt->GetBalancedColumns().GetValue());
+ m_FrmDirItem = pFmt->GetFrmDir();
+ m_LRSpaceItem = pFmt->GetLRSpace();
}
}
@@ -192,7 +249,7 @@ void SectRepr::SetFile( const String& rFile )
String sNewFile( INetURLObject::decode( rFile, INET_HEX_ESCAPE,
INetURLObject::DECODE_UNAMBIGUOUS,
RTL_TEXTENCODING_UTF8 ));
- String sOldFileName( aSection.GetLinkFileName() );
+ String sOldFileName( m_SectionData.GetLinkFileName() );
String sSub( sOldFileName.GetToken( 2, sfx2::cTokenSeperator ) );
if( rFile.Len() || sSub.Len() )
@@ -205,19 +262,23 @@ void SectRepr::SetFile( const String& rFile )
sNewFile += sSub;
}
- aSection.SetLinkFileName( sNewFile );
+ m_SectionData.SetLinkFileName( sNewFile );
if( rFile.Len() || sSub.Len() )
- aSection.SetType( FILE_LINK_SECTION );
+ {
+ m_SectionData.SetType( FILE_LINK_SECTION );
+ }
else
- aSection.SetType( CONTENT_SECTION );
+ {
+ m_SectionData.SetType( CONTENT_SECTION );
+ }
}
void SectRepr::SetFilter( const String& rFilter )
{
String sNewFile;
- String sOldFileName( aSection.GetLinkFileName() );
+ String sOldFileName( m_SectionData.GetLinkFileName() );
String sFile( sOldFileName.GetToken( 0, sfx2::cTokenSeperator ) );
String sSub( sOldFileName.GetToken( 2, sfx2::cTokenSeperator ) );
@@ -227,16 +288,18 @@ void SectRepr::SetFilter( const String& rFilter )
else if( sSub.Len() )
(( sNewFile = sfx2::cTokenSeperator ) += sfx2::cTokenSeperator ) += sSub;
- aSection.SetLinkFileName( sNewFile );
+ m_SectionData.SetLinkFileName( sNewFile );
if( sNewFile.Len() )
- aSection.SetType( FILE_LINK_SECTION );
+ {
+ m_SectionData.SetType( FILE_LINK_SECTION );
+ }
}
void SectRepr::SetSubRegion(const String& rSubRegion)
{
String sNewFile;
- String sOldFileName( aSection.GetLinkFileName() );
+ String sOldFileName( m_SectionData.GetLinkFileName() );
String sFilter( sOldFileName.GetToken( 1, sfx2::cTokenSeperator ) );
sOldFileName = sOldFileName.GetToken( 0, sfx2::cTokenSeperator );
@@ -244,21 +307,25 @@ void SectRepr::SetSubRegion(const String& rSubRegion)
(((( sNewFile = sOldFileName ) += sfx2::cTokenSeperator ) += sFilter )
+= sfx2::cTokenSeperator ) += rSubRegion;
- aSection.SetLinkFileName( sNewFile );
+ m_SectionData.SetLinkFileName( sNewFile );
if( rSubRegion.Len() || sOldFileName.Len() )
- aSection.SetType( FILE_LINK_SECTION );
+ {
+ m_SectionData.SetType( FILE_LINK_SECTION );
+ }
else
- aSection.SetType( CONTENT_SECTION );
+ {
+ m_SectionData.SetType( CONTENT_SECTION );
+ }
}
String SectRepr::GetFile() const
{
- String sLinkFile( aSection.GetLinkFileName() );
+ String sLinkFile( m_SectionData.GetLinkFileName() );
if( sLinkFile.Len() )
{
- if( DDE_LINK_SECTION == aSection.GetType() )
+ if (DDE_LINK_SECTION == m_SectionData.GetType())
{
USHORT n = sLinkFile.SearchAndReplace( sfx2::cTokenSeperator, ' ' );
sLinkFile.SearchAndReplace( sfx2::cTokenSeperator, ' ', n );
@@ -276,7 +343,7 @@ String SectRepr::GetFile() const
String SectRepr::GetSubRegion() const
{
- String sLinkFile( aSection.GetLinkFileName() );
+ String sLinkFile( m_SectionData.GetLinkFileName() );
if( sLinkFile.Len() )
sLinkFile = sLinkFile.GetToken( 2, sfx2::cTokenSeperator );
return sLinkFile;
@@ -284,7 +351,6 @@ String SectRepr::GetSubRegion() const
-
/*----------------------------------------------------------------------------
Beschreibung: Dialog Bearbeiten Bereiche
----------------------------------------------------------------------------*/
@@ -404,7 +470,8 @@ BOOL SwEditRegionDlg::CheckPasswd(CheckBox* pBox)
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
- if(!pRepr->GetTempPasswd().getLength() && pRepr->GetPasswd().getLength())
+ if (!pRepr->GetTempPasswd().getLength()
+ && pRepr->GetSectionData().GetPassword().getLength())
{
SwTestPasswdDlg aPasswdDlg(this);
bRet = FALSE;
@@ -413,7 +480,8 @@ BOOL SwEditRegionDlg::CheckPasswd(CheckBox* pBox)
String sNewPasswd( aPasswdDlg.GetPassword() );
UNO_NMSPC::Sequence <sal_Int8 > aNewPasswd;
SvPasswordHelper::GetHashPassword( aNewPasswd, sNewPasswd );
- if(SvPasswordHelper::CompareHashPassword(pRepr->GetPasswd(), sNewPasswd))
+ if (SvPasswordHelper::CompareHashPassword(
+ pRepr->GetSectionData().GetPassword(), sNewPasswd))
{
pRepr->SetTempPasswd(aNewPasswd);
bRet = TRUE;
@@ -460,7 +528,7 @@ void SwEditRegionDlg::RecurseList( const SwSectionFmt* pFmt, SvLBoxEntry* pEntry
SectRepr* pSectRepr = new SectRepr( n,
*(pSect=pFmt->GetSection()) );
Image aImg = BuildBitmap( pSect->IsProtect(),pSect->IsHidden(), FALSE);
- pEntry = aTree.InsertEntry( pSect->GetName(), aImg, aImg );
+ pEntry = aTree.InsertEntry(pSect->GetSectionName(), aImg, aImg);
Image aHCImg = BuildBitmap( pSect->IsProtect(),pSect->IsHidden(), TRUE);
aTree.SetExpandedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
aTree.SetCollapsedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
@@ -493,7 +561,8 @@ void SwEditRegionDlg::RecurseList( const SwSectionFmt* pFmt, SvLBoxEntry* pEntry
FindArrPos( pSect->GetFmt() ), *pSect );
Image aImage = BuildBitmap( pSect->IsProtect(),
pSect->IsHidden(), FALSE);
- pNEntry=aTree.InsertEntry( pSect->GetName(), aImage, aImage, pEntry);
+ pNEntry = aTree.InsertEntry(
+ pSect->GetSectionName(), aImage, aImage, pEntry);
Image aHCImg = BuildBitmap( pSect->IsProtect(),pSect->IsHidden(), TRUE);
aTree.SetExpandedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
aTree.SetCollapsedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
@@ -552,7 +621,7 @@ void SwEditRegionDlg::SelectSection(const String& rSectionName)
while(pEntry)
{
SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
- if(pRepr->GetSection().GetName() == rSectionName)
+ if (pRepr->GetSectionData().GetSectionName() == rSectionName)
break;
pEntry = aTree.Next(pEntry);
}
@@ -589,15 +658,15 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
// <--
aFileCB.EnableTriState( TRUE );
- BOOL bHiddenValid = TRUE;
- BOOL bProtectValid = TRUE;
- BOOL bConditionValid = TRUE;
+ bool bHiddenValid = true;
+ bool bProtectValid = true;
+ bool bConditionValid = true;
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL bEditInReadonlyValid = TRUE;
- BOOL bEditInReadonly = TRUE;
+ bool bEditInReadonlyValid = true;
+ bool bEditInReadonly = true;
// <--
- BOOL bHidden = TRUE;
- BOOL bProtect = TRUE;
+ bool bHidden = true;
+ bool bProtect = true;
String sCondition;
BOOL bFirst = TRUE;
BOOL bFileValid = TRUE;
@@ -607,29 +676,32 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
while( pEntry )
{
SectRepr* pRepr=(SectRepr*) pEntry->GetUserData();
+ SwSectionData const& rData( pRepr->GetSectionData() );
if(bFirst)
{
- sCondition = pRepr->GetCondition();
- bHidden = pRepr->IsHidden();
- bProtect = pRepr->IsProtect();
+ sCondition = rData.GetCondition();
+ bHidden = rData.IsHidden();
+ bProtect = rData.IsProtectFlag();
// --> FME 2004-06-22 #114856# edit in readonly sections
- bEditInReadonly = pRepr->IsEditInReadonly();
+ bEditInReadonly = rData.IsEditInReadonlyFlag();
// <--
- bFile = pRepr->GetSectionType() != CONTENT_SECTION;
- aCurPasswd = pRepr->GetPasswd();
+ bFile = (rData.GetType() != CONTENT_SECTION);
+ aCurPasswd = rData.GetPassword();
}
else
{
- String sTemp(pRepr->GetCondition());
+ String sTemp(rData.GetCondition());
if(sCondition != sTemp)
bConditionValid = FALSE;
- bHiddenValid = bHidden == pRepr->IsHidden();
- bProtectValid = bProtect == pRepr->IsProtect();
+ bHiddenValid = (bHidden == rData.IsHidden());
+ bProtectValid = (bProtect == rData.IsProtectFlag());
// --> FME 2004-06-22 #114856# edit in readonly sections
- bEditInReadonlyValid = bEditInReadonly == pRepr->IsEditInReadonly();
+ bEditInReadonlyValid =
+ (bEditInReadonly == rData.IsEditInReadonlyFlag());
// <--
- bFileValid = (pRepr->GetSectionType() != CONTENT_SECTION) == bFile;
- bPasswdValid = aCurPasswd == pRepr->GetPasswd();
+ bFileValid = (bFile ==
+ (rData.GetType() != CONTENT_SECTION));
+ bPasswdValid = (aCurPasswd == rData.GetPassword());
}
pEntry = pBox->NextSelected(pEntry);
bFirst = FALSE;
@@ -685,13 +757,14 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
aCurName .Enable(TRUE);
aOptionsPB .Enable(TRUE);
SectRepr* pRepr=(SectRepr*) pEntry->GetUserData();
- aConditionED.SetText(pRepr->GetCondition());
+ SwSectionData const& rData( pRepr->GetSectionData() );
+ aConditionED.SetText(rData.GetCondition());
aHideCB.Enable();
- aHideCB.SetState(pRepr->IsHidden() ? STATE_CHECK : STATE_NOCHECK);
+ aHideCB.SetState((rData.IsHidden()) ? STATE_CHECK : STATE_NOCHECK);
BOOL bHide = STATE_CHECK == aHideCB.GetState();
aConditionED.Enable(bHide);
aConditionFT.Enable(bHide);
- aPasswdCB.Check(pRepr->GetPasswd().getLength() > 0);
+ aPasswdCB.Check(rData.GetPassword().getLength() > 0);
aOK.Enable();
aPasswdCB.Enable();
@@ -707,7 +780,7 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
aFileCB.Check(TRUE);
aFileNameED.SetText(aFile);
aSubRegionED.SetText(sSub);
- aDDECB.Check(pRepr->GetSectionType() == DDE_LINK_SECTION );
+ aDDECB.Check(rData.GetType() == DDE_LINK_SECTION);
}
else
{
@@ -718,11 +791,13 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
}
UseFileHdl(&aFileCB);
DDEHdl( &aDDECB );
- aProtectCB.SetState(pRepr->IsProtect() ? STATE_CHECK : STATE_NOCHECK);
+ aProtectCB.SetState((rData.IsProtectFlag())
+ ? STATE_CHECK : STATE_NOCHECK);
aProtectCB.Enable();
// --> FME 2004-06-22 #114856# edit in readonly sections
- aEditInReadonlyCB.SetState( pRepr->IsEditInReadonly() ? STATE_CHECK : STATE_NOCHECK);
+ aEditInReadonlyCB.SetState((rData.IsEditInReadonlyFlag())
+ ? STATE_CHECK : STATE_NOCHECK);
aEditInReadonlyCB.Enable();
// <--
@@ -794,8 +869,10 @@ IMPL_LINK( SwEditRegionDlg, OkHdl, CheckBox *, EMPTYARG )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
SwSectionFmt* pFmt = aOrigArray[ pRepr->GetArrPos() ];
- if( !pRepr->GetSection().IsProtectFlag())
- pRepr->GetSection().SetPasswd(UNO_NMSPC::Sequence <sal_Int8 >());
+ if (!pRepr->GetSectionData().IsProtectFlag())
+ {
+ pRepr->GetSectionData().SetPassword(uno::Sequence<sal_Int8 >());
+ }
USHORT nNewPos = rDocFmts.GetPos( pFmt );
if( USHRT_MAX != nNewPos )
{
@@ -821,7 +898,7 @@ IMPL_LINK( SwEditRegionDlg, OkHdl, CheckBox *, EMPTYARG )
if( pFmt->GetLRSpace() != pRepr->GetLRSpace())
pSet->Put( pRepr->GetLRSpace());
- rSh.ChgSection( nNewPos, pRepr->GetSection(),
+ rSh.UpdateSection( nNewPos, pRepr->GetSectionData(),
pSet->Count() ? pSet : 0 );
delete pSet;
}
@@ -863,7 +940,7 @@ IMPL_LINK( SwEditRegionDlg, ChangeProtectHdl, TriStateBox *, pBox )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->SetProtect(bCheck);
+ pRepr->GetSectionData().SetProtectFlag(bCheck);
Image aImage = BuildBitmap( bCheck,
STATE_CHECK == aHideCB.GetState(), FALSE);
aTree.SetExpandedEntryBmp(pEntry, aImage, BMP_COLOR_NORMAL);
@@ -891,7 +968,7 @@ IMPL_LINK( SwEditRegionDlg, ChangeHideHdl, TriStateBox *, pBox )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->SetHidden(STATE_CHECK == pBox->GetState());
+ pRepr->GetSectionData().SetHidden(STATE_CHECK == pBox->GetState());
Image aImage = BuildBitmap(STATE_CHECK == aProtectCB.GetState(),
STATE_CHECK == pBox->GetState(), FALSE);
aTree.SetExpandedEntryBmp(pEntry, aImage, BMP_COLOR_NORMAL);
@@ -924,7 +1001,8 @@ IMPL_LINK( SwEditRegionDlg, ChangeEditInReadonlyHdl, TriStateBox *, pBox )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->SetEditInReadonly(STATE_CHECK == pBox->GetState());
+ pRepr->GetSectionData().SetEditInReadonlyFlag(
+ STATE_CHECK == pBox->GetState());
pEntry = aTree.NextSelected(pEntry);
}
@@ -1028,7 +1106,7 @@ IMPL_LINK( SwEditRegionDlg, UseFileHdl, CheckBox *, pBox )
{
pSectRepr->SetFile(aEmptyStr);
pSectRepr->SetSubRegion(aEmptyStr);
- pSectRepr->SetFilePasswd(aEmptyStr);
+ pSectRepr->GetSectionData().SetLinkFilePassword(aEmptyStr);
}
pEntry = aTree.NextSelected(pEntry);
@@ -1221,8 +1299,8 @@ IMPL_LINK( SwEditRegionDlg, FileNameHdl, Edit *, pEdit )
nPos = sLink.SearchAndReplace( ' ', sfx2::cTokenSeperator );
sLink.SearchAndReplace( ' ', sfx2::cTokenSeperator, nPos );
- pSectRepr->GetSection().SetLinkFileName( sLink );
- pSectRepr->GetSection().SetType( DDE_LINK_SECTION );
+ pSectRepr->GetSectionData().SetLinkFileName( sLink );
+ pSectRepr->GetSectionData().SetType( DDE_LINK_SECTION );
}
else
{
@@ -1237,7 +1315,7 @@ IMPL_LINK( SwEditRegionDlg, FileNameHdl, Edit *, pEdit )
aAbs, sTmp, URIHelper::GetMaybeFileHdl() );
}
pSectRepr->SetFile( sTmp );
- pSectRepr->SetFilePasswd( aEmptyStr );
+ pSectRepr->GetSectionData().SetLinkFilePassword( aEmptyStr );
}
}
else
@@ -1259,6 +1337,7 @@ IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
{
BOOL bFile = aFileCB.IsChecked();
SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ SwSectionData & rData( pSectRepr->GetSectionData() );
BOOL bDDE = pBox->IsChecked();
if(bDDE)
{
@@ -1267,13 +1346,13 @@ IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
aDDECommandFT.Show();
aSubRegionFT.Hide();
aSubRegionED.Hide();
- if(FILE_LINK_SECTION == pSectRepr->GetSectionType() )
+ if (FILE_LINK_SECTION == rData.GetType())
{
pSectRepr->SetFile(aEmptyStr);
aFileNameED.SetText(aEmptyStr);
- pSectRepr->SetFilePasswd( aEmptyStr );
+ rData.SetLinkFilePassword( aEmptyStr );
}
- pSectRepr->SetSectionType( DDE_LINK_SECTION );
+ rData.SetType(DDE_LINK_SECTION);
}
else
{
@@ -1285,11 +1364,11 @@ IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
aSubRegionED.Enable(bFile);
aSubRegionFT.Enable(bFile);
aSubRegionED.Enable(bFile);
- if(DDE_LINK_SECTION == pSectRepr->GetSectionType() )
+ if (DDE_LINK_SECTION == rData.GetType())
{
- pSectRepr->SetSectionType( FILE_LINK_SECTION );
+ rData.SetType(FILE_LINK_SECTION);
pSectRepr->SetFile(aEmptyStr);
- pSectRepr->SetFilePasswd( aEmptyStr );
+ rData.SetLinkFilePassword( aEmptyStr );
aFileNameED.SetText(aEmptyStr);
}
}
@@ -1343,10 +1422,12 @@ IMPL_LINK( SwEditRegionDlg, ChangePasswdHdl, Button *, pBox )
break;
}
}
- pRepr->GetSection().SetPasswd(pRepr->GetTempPasswd());
+ pRepr->GetSectionData().SetPassword(pRepr->GetTempPasswd());
}
else
- pRepr->GetSection().SetPasswd(UNO_NMSPC::Sequence <sal_Int8 >());
+ {
+ pRepr->GetSectionData().SetPassword(uno::Sequence<sal_Int8 >());
+ }
pEntry = aTree.NextSelected(pEntry);
}
return 0;
@@ -1368,7 +1449,7 @@ IMPL_LINK( SwEditRegionDlg, NameEditHdl, Edit *, EMPTYARG )
String aName = aCurName.GetText();
aTree.SetEntryText(pEntry,aName);
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->GetSection().SetName(aName);
+ pRepr->GetSectionData().SetSectionName(aName);
aOK.Enable(aName.Len() != 0);
}
@@ -1389,7 +1470,7 @@ IMPL_LINK( SwEditRegionDlg, ConditionEditHdl, Edit *, pEdit )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
- pRepr->SetCondition (pEdit->GetText());
+ pRepr->GetSectionData().SetCondition(pEdit->GetText());
pEntry = aTree.NextSelected(pEntry);
}
return 0;
@@ -1420,7 +1501,7 @@ IMPL_LINK( SwEditRegionDlg, DlgClosedHdl, sfx2::FileDialogHelper *, _pFileDlg )
SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
pSectRepr->SetFile( sFileName );
pSectRepr->SetFilter( sFilterName );
- pSectRepr->SetFilePasswd( sPassword );
+ pSectRepr->GetSectionData().SetLinkFilePassword(sPassword);
aFileNameED.SetText( pSectRepr->GetFile() );
}
@@ -1495,8 +1576,8 @@ static void lcl_ReadSections( SfxMedium& rMedium, ComboBox& rBox )
SwInsertSectionTabDialog::SwInsertSectionTabDialog(
Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) :
SfxTabDialog( pParent, SW_RES(DLG_INSERT_SECTION), &rSet ),
- rWrtSh(rSh),
- pToInsertSection(0)
+ rWrtSh(rSh)
+ , m_pSectionData(0)
{
String sInsert(SW_RES(ST_INSERT));
GetOKButton().SetText(sInsert);
@@ -1527,7 +1608,6 @@ SwInsertSectionTabDialog::SwInsertSectionTabDialog(
* --------------------------------------------------*/
SwInsertSectionTabDialog::~SwInsertSectionTabDialog()
{
- delete pToInsertSection;
}
/* -----------------21.05.99 10:23-------------------
*
@@ -1556,10 +1636,9 @@ void SwInsertSectionTabDialog::PageCreated( USHORT nId, SfxTabPage &rPage )
*
* --------------------------------------------------*/
-void SwInsertSectionTabDialog::SetSection(const SwSection& rSect)
+void SwInsertSectionTabDialog::SetSectionData(SwSectionData const& rSect)
{
- pToInsertSection = new SwSection(CONTENT_SECTION, aEmptyStr);
- *pToInsertSection = rSect;
+ m_pSectionData.reset( new SwSectionData(rSect) );
}
/* -----------------21.05.99 13:10-------------------
*
@@ -1567,9 +1646,10 @@ void SwInsertSectionTabDialog::SetSection(const SwSection& rSect)
short SwInsertSectionTabDialog::Ok()
{
short nRet = SfxTabDialog::Ok();
- DBG_ASSERT(pToInsertSection, "keiner Section?");
+ DBG_ASSERT(m_pSectionData.get(),
+ "SwInsertSectionTabDialog: no SectionData?");
const SfxItemSet* pOutputItemSet = GetOutputItemSet();
- rWrtSh.InsertSection(*pToInsertSection, pOutputItemSet);
+ rWrtSh.InsertSection(*m_pSectionData, pOutputItemSet);
SfxViewFrame* pViewFrm = rWrtSh.GetView().GetViewFrame();
uno::Reference< frame::XDispatchRecorder > xRecorder =
pViewFrm->GetBindings().GetRecorder();
@@ -1582,15 +1662,20 @@ short SwInsertSectionTabDialog::Ok()
aRequest.AppendItem(SfxUInt16Item(SID_ATTR_COLUMNS,
((const SwFmtCol*)pCol)->GetColumns().Count()));
}
- aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_NAME, pToInsertSection->GetName()));
- aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_CONDITION, pToInsertSection->GetCondition()));
- aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_HIDDEN, pToInsertSection->IsHidden()));
- aRequest.AppendItem(SfxBoolItem(FN_PARAM_REGION_PROTECT, pToInsertSection->IsProtect()));
+ aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_NAME,
+ m_pSectionData->GetSectionName()));
+ aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_CONDITION,
+ m_pSectionData->GetCondition()));
+ aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_HIDDEN,
+ m_pSectionData->IsHidden()));
+ aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_PROTECT,
+ m_pSectionData->IsProtectFlag()));
// --> FME 2004-06-22 #114856# edit in readonly sections
- aRequest.AppendItem(SfxBoolItem(FN_PARAM_REGION_EDIT_IN_READONLY, pToInsertSection->IsEditInReadonly()));
+ aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_EDIT_IN_READONLY,
+ m_pSectionData->IsEditInReadonlyFlag()));
// <--
- String sLinkFileName( pToInsertSection->GetLinkFileName() );
+ String sLinkFileName( m_pSectionData->GetLinkFileName() );
aRequest.AppendItem(SfxStringItem( FN_PARAM_1, sLinkFileName.GetToken( 0, sfx2::cTokenSeperator )));
aRequest.AppendItem(SfxStringItem( FN_PARAM_2, sLinkFileName.GetToken( 1, sfx2::cTokenSeperator )));
aRequest.AppendItem(SfxStringItem( FN_PARAM_3, sLinkFileName.GetToken( 2, sfx2::cTokenSeperator )));
@@ -1675,13 +1760,16 @@ void SwInsertSectionTabPage::SetWrtShell(SwWrtShell& rSh)
lcl_FillSubRegionList( *m_pWrtSh, aSubRegionED, &aCurName );
- SwSection* pSect = ((SwInsertSectionTabDialog*)GetTabDialog())->GetSection();
- if( pSect ) // etwas vorgegeben ?
+ SwSectionData *const pSectionData =
+ static_cast<SwInsertSectionTabDialog*>(GetTabDialog())
+ ->GetSectionData();
+ if (pSectionData) // something set?
{
- aCurName.SetText( rSh.GetUniqueSectionName( &pSect->GetName() ));
- aProtectCB.Check( 0 != pSect->IsProtect() );
- m_sFileName = pSect->GetLinkFileName();
- m_sFilePasswd = pSect->GetLinkFilePassWd();
+ aCurName.SetText(
+ rSh.GetUniqueSectionName(& pSectionData->GetSectionName()));
+ aProtectCB.Check( 0 != pSectionData->IsProtectFlag() );
+ m_sFileName = pSectionData->GetLinkFileName();
+ m_sFilePasswd = pSectionData->GetLinkFilePassword();
aFileCB.Check( 0 != m_sFileName.Len() );
aFileNameED.SetText( m_sFileName );
UseFileHdl( &aFileCB );
@@ -1696,16 +1784,18 @@ void SwInsertSectionTabPage::SetWrtShell(SwWrtShell& rSh)
* --------------------------------------------------*/
BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& )
{
- SwSection aSection(CONTENT_SECTION, aCurName.GetText());
+ SwSectionData aSection(CONTENT_SECTION, aCurName.GetText());
aSection.SetCondition(aConditionED.GetText());
BOOL bProtected = aProtectCB.IsChecked();
- aSection.SetProtect(bProtected);
+ aSection.SetProtectFlag(bProtected);
aSection.SetHidden(aHideCB.IsChecked());
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSection.SetEditInReadonly(aEditInReadonlyCB.IsChecked());
+ aSection.SetEditInReadonlyFlag(aEditInReadonlyCB.IsChecked());
// <--
if(bProtected)
- aSection.SetPasswd(m_aNewPasswd);
+ {
+ aSection.SetPassword(m_aNewPasswd);
+ }
String sFileName = aFileNameED.GetText();
String sSubRegion = aSubRegionED.GetText();
BOOL bDDe = aDDECB.IsChecked();
@@ -1733,7 +1823,7 @@ BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& )
aAbs = pMedium->GetURLObject();
aLinkFile = URIHelper::SmartRel2Abs(
aAbs, sFileName, URIHelper::GetMaybeFileHdl() );
- aSection.SetLinkFilePassWd( m_sFilePasswd );
+ aSection.SetLinkFilePassword( m_sFilePasswd );
}
aLinkFile += sfx2::cTokenSeperator;
@@ -1750,7 +1840,7 @@ BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& )
FILE_LINK_SECTION);
}
}
- ((SwInsertSectionTabDialog*)GetTabDialog())->SetSection(aSection);
+ ((SwInsertSectionTabDialog*)GetTabDialog())->SetSectionData(aSection);
return TRUE;
}
/* -----------------21.05.99 10:32-------------------
diff --git a/sw/source/ui/dochdl/swdtflvr.cxx b/sw/source/ui/dochdl/swdtflvr.cxx
index 7778b3848f45..66cb07f33e9c 100644
--- a/sw/source/ui/dochdl/swdtflvr.cxx
+++ b/sw/source/ui/dochdl/swdtflvr.cxx
@@ -2211,9 +2211,9 @@ int SwTransferable::_PasteDDE( TransferableDataHelper& rData,
if( rWrtShell.HasSelection() )
rWrtShell.DelRight();
- SwSection aSect( DDE_LINK_SECTION, aName );
+ SwSectionData aSect( DDE_LINK_SECTION, aName );
aSect.SetLinkFileName( aCmd );
- aSect.SetProtect();
+ aSect.SetProtectFlag(true);
rWrtShell.InsertSection( aSect );
pDDETyp = 0; // FeldTypen wieder entfernen
@@ -2554,10 +2554,11 @@ int SwTransferable::_PasteFileName( TransferableDataHelper& rData,
)
{
// und dann per PostUser Event den Bereich-Einfuegen-Dialog hochreissen
- SwSection* pSect = new SwSection( FILE_LINK_SECTION,
+ SwSectionData * pSect = new SwSectionData(
+ FILE_LINK_SECTION,
rSh.GetDoc()->GetUniqueSectionName() );
pSect->SetLinkFileName( sFileURL );
- pSect->SetProtect( TRUE );
+ pSect->SetProtectFlag( true );
Application::PostUserEvent( STATIC_LINK( &rSh, SwWrtShell,
InsertRegionDialog ), pSect );
diff --git a/sw/source/ui/docvw/AnchorOverlayObject.cxx b/sw/source/ui/docvw/AnchorOverlayObject.cxx
new file mode 100644
index 000000000000..53afaf625710
--- /dev/null
+++ b/sw/source/ui/docvw/AnchorOverlayObject.cxx
@@ -0,0 +1,467 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: postit.cxx,v $
+ * $Revision: 1.8.42.11 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <AnchorOverlayObject.hxx>
+#include <SidebarWindowsConsts.hxx>
+
+#include <swrect.hxx>
+#include <view.hxx>
+#include <svx/sdrpaintwindow.hxx>
+#include <svx/svdview.hxx>
+#include <svx/sdr/overlay/overlaymanager.hxx>
+
+#include <sw_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
+
+namespace sw { namespace sidebarwindows {
+
+//////////////////////////////////////////////////////////////////////////////
+// helper class: Primitive for discrete visualisation
+
+class AnchorPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
+{
+private:
+ basegfx::B2DPolygon maTriangle;
+ basegfx::B2DPolygon maLine;
+ basegfx::B2DPolygon maLineTop;
+ const AnchorState maAnchorState;
+ basegfx::BColor maColor;
+
+ // discrete line width
+ double mfLogicLineWidth;
+
+ // bitfield
+ bool mbShadow : 1;
+ bool mbLineSolid : 1;
+
+protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
+
+public:
+ AnchorPrimitive( const basegfx::B2DPolygon& rTriangle,
+ const basegfx::B2DPolygon& rLine,
+ const basegfx::B2DPolygon& rLineTop,
+ AnchorState aAnchorState,
+ const basegfx::BColor& rColor,
+ double fLogicLineWidth,
+ bool bShadow,
+ bool bLineSolid )
+ : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
+ maTriangle(rTriangle),
+ maLine(rLine),
+ maLineTop(rLineTop),
+ maAnchorState(aAnchorState),
+ maColor(rColor),
+ mfLogicLineWidth(fLogicLineWidth),
+ mbShadow(bShadow),
+ mbLineSolid(bLineSolid)
+ {}
+
+ // data access
+ const basegfx::B2DPolygon& getTriangle() const { return maTriangle; }
+ const basegfx::B2DPolygon& getLine() const { return maLine; }
+ const basegfx::B2DPolygon& getLineTop() const { return maLineTop; }
+ const AnchorState getAnchorState() const { return maAnchorState; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ double getLogicLineWidth() const { return mfLogicLineWidth; }
+ bool getShadow() const { return mbShadow; }
+ bool getLineSolid() const { return mbLineSolid; }
+
+ virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+};
+
+drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
+{
+ drawinglayer::primitive2d::Primitive2DSequence aRetval;
+
+ if ( AS_TRI == maAnchorState ||
+ AS_ALL == maAnchorState ||
+ AS_START == maAnchorState )
+ {
+ // create triangle
+ const drawinglayer::primitive2d::Primitive2DReference aTriangle(
+ new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
+ basegfx::B2DPolyPolygon(getTriangle()),
+ getColor()));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aTriangle);
+ }
+
+ if ( AS_ALL == maAnchorState ||
+ AS_START == maAnchorState )
+ {
+ // create line start
+ const drawinglayer::attribute::LineAttribute aLineAttribute(
+ getColor(),
+ getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
+
+ if(getLineSolid())
+ {
+ const drawinglayer::primitive2d::Primitive2DReference aSolidLine(
+ new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
+ getLine(),
+ aLineAttribute));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aSolidLine);
+ }
+ else
+ {
+ ::std::vector< double > aDotDashArray;
+ const double fDistance(3.0 * 15.0);
+ const double fDashLen(5.0 * 15.0);
+
+ aDotDashArray.push_back(fDashLen);
+ aDotDashArray.push_back(fDistance);
+
+ const drawinglayer::attribute::StrokeAttribute aStrokeAttribute(
+ aDotDashArray,
+ fDistance + fDashLen);
+
+ const drawinglayer::primitive2d::Primitive2DReference aStrokedLine(
+ new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
+ getLine(),
+ aLineAttribute,
+ aStrokeAttribute));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aStrokedLine);
+ }
+ }
+
+ if(aRetval.hasElements() && getShadow())
+ {
+ // shadow is only for triangle and line start, and in upper left
+ // and lower right direction, in different colors
+ const double fColorChange(20.0 / 255.0);
+ const basegfx::B3DTuple aColorChange(fColorChange, fColorChange, fColorChange);
+ basegfx::BColor aLighterColor(getColor() + aColorChange);
+ basegfx::BColor aDarkerColor(getColor() - aColorChange);
+
+ aLighterColor.clamp();
+ aDarkerColor.clamp();
+
+ // create shadow sequence
+ drawinglayer::primitive2d::Primitive2DSequence aShadows(2);
+ basegfx::B2DHomMatrix aTransform;
+
+ aTransform.set(0, 2, -getDiscreteUnit());
+ aTransform.set(1, 2, -getDiscreteUnit());
+
+ aShadows[0] = drawinglayer::primitive2d::Primitive2DReference(
+ new drawinglayer::primitive2d::ShadowPrimitive2D(
+ aTransform,
+ aLighterColor,
+ aRetval));
+
+ aTransform.set(0, 2, getDiscreteUnit());
+ aTransform.set(1, 2, getDiscreteUnit());
+
+ aShadows[1] = drawinglayer::primitive2d::Primitive2DReference(
+ new drawinglayer::primitive2d::ShadowPrimitive2D(
+ aTransform,
+ aDarkerColor,
+ aRetval));
+
+ // add shadow before geometry to make it be proccessed first
+ const drawinglayer::primitive2d::Primitive2DSequence aTemporary(aRetval);
+
+ aRetval = aShadows;
+ drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemporary);
+ }
+
+ if ( AS_ALL == maAnchorState ||
+ AS_END == maAnchorState )
+ {
+ // LineTop has to be created, too, but uses no shadow, so add after
+ // the other parts are created
+ const drawinglayer::attribute::LineAttribute aLineAttribute(
+ getColor(),
+ getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
+
+ const drawinglayer::primitive2d::Primitive2DReference aLineTop(
+ new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
+ getLineTop(),
+ aLineAttribute));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aLineTop);
+ }
+
+ return aRetval;
+}
+
+bool AnchorPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
+{
+ if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
+ {
+ const AnchorPrimitive& rCompare = static_cast< const AnchorPrimitive& >(rPrimitive);
+
+ return (getTriangle() == rCompare.getTriangle()
+ && getLine() == rCompare.getLine()
+ && getLineTop() == rCompare.getLineTop()
+ && getAnchorState() == rCompare.getAnchorState()
+ && getColor() == rCompare.getColor()
+ && getLogicLineWidth() == rCompare.getLogicLineWidth()
+ && getShadow() == rCompare.getShadow()
+ && getLineSolid() == rCompare.getLineSolid());
+ }
+
+ return false;
+}
+
+ImplPrimitrive2DIDBlock(AnchorPrimitive, PRIMITIVE2D_ID_SWSIDEBARANCHORPRIMITIVE)
+
+/****** AnchorOverlayObject ***********************************************************/
+/*static*/ AnchorOverlayObject* AnchorOverlayObject::CreateAnchorOverlayObject(
+ SwView& rDocView,
+ const SwRect& aAnchorRect,
+ const long& aPageBorder,
+ const Point& aLineStart,
+ const Point& aLineEnd,
+ const Color& aColorAnchor )
+{
+ AnchorOverlayObject* pAnchorOverlayObject( 0 );
+ if ( rDocView.GetDrawView() )
+ {
+ SdrPaintWindow* pPaintWindow = rDocView.GetDrawView()->GetPaintWindow(0);
+ if( pPaintWindow )
+ {
+ sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
+
+ if ( pOverlayManager )
+ {
+ pAnchorOverlayObject = new AnchorOverlayObject(
+ basegfx::B2DPoint( aAnchorRect.Left() , aAnchorRect.Bottom()-5*15),
+ basegfx::B2DPoint( aAnchorRect.Left()-5*15 , aAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( aAnchorRect.Left()+5*15 , aAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( aAnchorRect.Left(), aAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( aPageBorder ,aAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
+ basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()) ,
+ aColorAnchor,
+ false,
+ false);
+ pOverlayManager->add(*pAnchorOverlayObject);
+ }
+ }
+ }
+
+ return pAnchorOverlayObject;
+}
+
+/*static*/ void AnchorOverlayObject::DestroyAnchorOverlayObject( AnchorOverlayObject* pAnchor )
+{
+ if ( pAnchor )
+ {
+ if ( pAnchor->getOverlayManager() )
+ {
+ // remove this object from the chain
+ pAnchor->getOverlayManager()->remove(*pAnchor);
+ }
+ delete pAnchor;
+ }
+}
+
+AnchorOverlayObject::AnchorOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ const basegfx::B2DPoint& rThirdPos,
+ const basegfx::B2DPoint& rFourthPos,
+ const basegfx::B2DPoint& rFifthPos,
+ const basegfx::B2DPoint& rSixthPos,
+ const basegfx::B2DPoint& rSeventhPos,
+ const Color aBaseColor,
+ const bool bShadowedEffect,
+ const bool bLineSolid)
+ : OverlayObjectWithBasePosition( rBasePos, aBaseColor )
+ , maSecondPosition(rSecondPos)
+ , maThirdPosition(rThirdPos)
+ , maFourthPosition(rFourthPos)
+ , maFifthPosition(rFifthPos)
+ , maSixthPosition(rSixthPos)
+ , maSeventhPosition(rSeventhPos)
+ , maTriangle()
+ , maLine()
+ , maLineTop()
+ , mHeight(0)
+ , mAnchorState(AS_ALL)
+ , mbShadowedEffect(bShadowedEffect)
+ , mbLineSolid(bLineSolid)
+{
+}
+
+AnchorOverlayObject::~AnchorOverlayObject()
+{
+}
+
+void AnchorOverlayObject::implEnsureGeometry()
+{
+ if(!maTriangle.count())
+ {
+ maTriangle.append(getBasePosition());
+ maTriangle.append(GetSecondPosition());
+ maTriangle.append(GetThirdPosition());
+ maTriangle.setClosed(true);
+ }
+
+ if(!maLine.count())
+ {
+ maLine.append(GetFourthPosition());
+ maLine.append(GetFifthPosition());
+ maLine.append(GetSixthPosition());
+ }
+
+ if(!maLineTop.count())
+ {
+ maLineTop.append(GetSixthPosition());
+ maLineTop.append(GetSeventhPosition());
+ }
+}
+
+void AnchorOverlayObject::implResetGeometry()
+{
+ maTriangle.clear();
+ maLine.clear();
+ maLineTop.clear();
+}
+
+drawinglayer::primitive2d::Primitive2DSequence AnchorOverlayObject::createOverlayObjectPrimitive2DSequence()
+{
+ implEnsureGeometry();
+
+ const drawinglayer::primitive2d::Primitive2DReference aReference(
+ new AnchorPrimitive( maTriangle,
+ maLine,
+ maLineTop,
+ GetAnchorState(),
+ getBaseColor().getBColor(),
+ ANCHORLINE_WIDTH * 15.0,
+ getShadowedEffect(),
+ getLineSolid()) );
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
+}
+
+void AnchorOverlayObject::SetAllPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2,
+ const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,
+ const basegfx::B2DPoint& rPoint5,
+ const basegfx::B2DPoint& rPoint6,
+ const basegfx::B2DPoint& rPoint7)
+{
+ if ( rPoint1 != getBasePosition() ||
+ rPoint2 != GetSecondPosition() ||
+ rPoint3 != GetThirdPosition() ||
+ rPoint4 != GetFourthPosition() ||
+ rPoint5 != GetFifthPosition() ||
+ rPoint6 != GetSixthPosition() ||
+ rPoint7 != GetSeventhPosition() )
+ {
+ maBasePosition = rPoint1;
+ maSecondPosition = rPoint2;
+ maThirdPosition = rPoint3;
+ maFourthPosition = rPoint4;
+ maFifthPosition = rPoint5;
+ maSixthPosition = rPoint6;
+ maSeventhPosition = rPoint7;
+
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetSixthPosition(const basegfx::B2DPoint& rNew)
+{
+ if(rNew != maSixthPosition)
+ {
+ maSixthPosition = rNew;
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetSeventhPosition(const basegfx::B2DPoint& rNew)
+{
+ if(rNew != maSeventhPosition)
+ {
+ maSeventhPosition = rNew;
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetTriPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2,const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,const basegfx::B2DPoint& rPoint5)
+{
+ if(rPoint1 != getBasePosition()
+ || rPoint2 != GetSecondPosition()
+ || rPoint3 != GetThirdPosition()
+ || rPoint4 != GetFourthPosition()
+ || rPoint5 != GetFifthPosition())
+ {
+ maBasePosition = rPoint1;
+ maSecondPosition = rPoint2;
+ maThirdPosition = rPoint3;
+ maFourthPosition = rPoint4;
+ maFifthPosition = rPoint5;
+
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::setLineSolid( const bool bNew )
+{
+ if ( bNew != getLineSolid() )
+ {
+ mbLineSolid = bNew;
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetAnchorState( const AnchorState aState)
+{
+ if ( mAnchorState != aState)
+ {
+ mAnchorState = aState;
+ objectChange();
+ }
+}
+
+} } // end of namespace sw::annotation
+
diff --git a/sw/source/ui/docvw/AnchorOverlayObject.hxx b/sw/source/ui/docvw/AnchorOverlayObject.hxx
new file mode 100644
index 000000000000..cea567f22921
--- /dev/null
+++ b/sw/source/ui/docvw/AnchorOverlayObject.hxx
@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _ANCHOROVERLAYOBJECT_HXX
+#define _ANCHOROVERLAYOBJECT_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+class SwView;
+class SwRect;
+class Point;
+
+namespace sw { namespace sidebarwindows {
+
+enum AnchorState
+{
+ AS_ALL,
+ AS_START,
+ AS_END,
+ AS_TRI
+};
+
+class AnchorOverlayObject: public sdr::overlay::OverlayObjectWithBasePosition
+{
+ public:
+ static AnchorOverlayObject* CreateAnchorOverlayObject( SwView& rDocView,
+ const SwRect& aAnchorRect,
+ const long& aPageBorder,
+ const Point& aLineStart,
+ const Point& aLineEnd,
+ const Color& aColorAnchor );
+ static void DestroyAnchorOverlayObject( AnchorOverlayObject* pAnchor );
+
+ inline const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
+ const basegfx::B2DPoint& GetThirdPosition() const { return maThirdPosition; }
+ const basegfx::B2DPoint& GetFourthPosition() const { return maFourthPosition; }
+ const basegfx::B2DPoint& GetFifthPosition() const { return maFifthPosition; }
+ const basegfx::B2DPoint& GetSixthPosition() const { return maSixthPosition; }
+ const basegfx::B2DPoint& GetSeventhPosition() const { return maSeventhPosition; }
+
+ void SetAllPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2,
+ const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,
+ const basegfx::B2DPoint& rPoint5,
+ const basegfx::B2DPoint& rPoint6,
+ const basegfx::B2DPoint& rPoint7 );
+ void SetTriPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2,
+ const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,
+ const basegfx::B2DPoint& rPoint5 );
+ void SetSixthPosition( const basegfx::B2DPoint& rNew );
+ void SetSeventhPosition( const basegfx::B2DPoint& rNew );
+
+ void setLineSolid( const bool bNew );
+ inline bool getLineSolid() const { return mbLineSolid; }
+
+ inline void SetHeight( const unsigned long aHeight ) { mHeight = aHeight; };
+
+ bool getShadowedEffect() const { return mbShadowedEffect; }
+
+ void SetAnchorState( const AnchorState aState );
+ inline AnchorState GetAnchorState() const { return mAnchorState; }
+
+ protected:
+ /* 6------------7
+ 1 /
+ /4\ ---------------5
+ 2 - 3
+ */
+
+ basegfx::B2DPoint maSecondPosition;
+ basegfx::B2DPoint maThirdPosition;
+ basegfx::B2DPoint maFourthPosition;
+ basegfx::B2DPoint maFifthPosition;
+ basegfx::B2DPoint maSixthPosition;
+ basegfx::B2DPoint maSeventhPosition;
+
+ // helpers to fill and reset geometry
+ void implEnsureGeometry();
+ void implResetGeometry();
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ private:
+ // object's geometry
+ basegfx::B2DPolygon maTriangle;
+ basegfx::B2DPolygon maLine;
+ basegfx::B2DPolygon maLineTop;
+ unsigned long mHeight;
+ AnchorState mAnchorState;
+
+ bool mbShadowedEffect : 1;
+ bool mbLineSolid : 1;
+
+ AnchorOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ const basegfx::B2DPoint& rThirdPos,
+ const basegfx::B2DPoint& rFourthPos,
+ const basegfx::B2DPoint& rFifthPos,
+ const basegfx::B2DPoint& rSixthPos,
+ const basegfx::B2DPoint& rSeventhPos,
+ const Color aBaseColor,
+ const bool bShadowedEffect,
+ const bool bLineSolid );
+ virtual ~AnchorOverlayObject();
+};
+
+} } // end of namespace sw::annotation
+
+#endif
diff --git a/sw/source/ui/docvw/AnnotationMenuButton.cxx b/sw/source/ui/docvw/AnnotationMenuButton.cxx
new file mode 100644
index 000000000000..6022a4646ae6
--- /dev/null
+++ b/sw/source/ui/docvw/AnnotationMenuButton.cxx
@@ -0,0 +1,222 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <AnnotationMenuButton.hxx>
+
+#include <annotation.hrc>
+#include <app.hrc>
+#include <access.hrc>
+
+#include <unotools/useroptions.hxx>
+
+#include <vcl/svapp.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/decoview.hxx>
+#include <vcl/gradient.hxx>
+
+#include <cmdid.h>
+#include <SidebarWin.hxx>
+
+namespace sw { namespace annotation {
+
+Color ColorFromAlphaColor( const UINT8 aTransparency,
+ const Color &aFront,
+ const Color &aBack )
+{
+ return Color((UINT8)(aFront.GetRed() * aTransparency/(double)255 + aBack.GetRed() * (1-aTransparency/(double)255)),
+ (UINT8)(aFront.GetGreen() * aTransparency/(double)255 + aBack.GetGreen() * (1-aTransparency/(double)255)),
+ (UINT8)(aFront.GetBlue() * aTransparency/(double)255 + aBack.GetBlue() * (1-aTransparency/(double)255)));
+}
+
+AnnotationMenuButton::AnnotationMenuButton( sw::sidebarwindows::SwSidebarWin& rSidebarWin )
+ : MenuButton( &rSidebarWin )
+ , mrSidebarWin( rSidebarWin )
+{
+ AddEventListener( LINK( &mrSidebarWin, sw::sidebarwindows::SwSidebarWin, WindowEventListener ) );
+
+ SetAccessibleName( SW_RES( STR_ACCESS_ANNOTATION_BUTTON_NAME ) );
+ SetAccessibleDescription( SW_RES( STR_ACCESS_ANNOTATION_BUTTON_DESC ) );
+ SetQuickHelpText( GetAccessibleDescription() );
+}
+
+AnnotationMenuButton::~AnnotationMenuButton()
+{
+ RemoveEventListener( LINK( &mrSidebarWin, sw::sidebarwindows::SwSidebarWin, WindowEventListener ) );
+}
+
+void AnnotationMenuButton::Select()
+{
+ mrSidebarWin.ExecuteCommand( GetCurItemId() );
+}
+
+void AnnotationMenuButton::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ PopupMenu* pButtonPopup( GetPopupMenu() );
+ if ( mrSidebarWin.IsReadOnly() )
+ {
+ pButtonPopup->EnableItem( FN_REPLY, false );
+ pButtonPopup->EnableItem( FN_DELETE_NOTE, false );
+ pButtonPopup->EnableItem( FN_DELETE_NOTE_AUTHOR, false );
+ pButtonPopup->EnableItem( FN_DELETE_ALL_NOTES, false );
+ }
+ else
+ {
+ if ( mrSidebarWin.IsProtected() )
+ {
+ pButtonPopup->EnableItem( FN_DELETE_NOTE, false );
+ }
+ else
+ {
+ pButtonPopup->EnableItem( FN_DELETE_NOTE, true );
+ }
+ pButtonPopup->EnableItem( FN_DELETE_NOTE_AUTHOR, true );
+ pButtonPopup->EnableItem( FN_DELETE_ALL_NOTES, true );
+ }
+
+ if ( mrSidebarWin.IsProtected() )
+ {
+ pButtonPopup->EnableItem( FN_REPLY, false );
+ }
+ else
+ {
+ SvtUserOptions aUserOpt;
+ String sAuthor;
+ if ( !(sAuthor = aUserOpt.GetFullName()).Len() )
+ {
+ if ( !(sAuthor = aUserOpt.GetID()).Len() )
+ {
+ sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
+ }
+ }
+ // do not allow to reply to ourself and no answer possible if this note is in a protected section
+ if ( sAuthor == mrSidebarWin.GetAuthor() )
+ {
+ pButtonPopup->EnableItem( FN_REPLY, false );
+ }
+ else
+ {
+ pButtonPopup->EnableItem( FN_REPLY, true );
+ }
+ }
+
+ MenuButton::MouseButtonDown( rMEvt );
+}
+
+void AnnotationMenuButton::Paint( const Rectangle& /*rRect*/ )
+{
+ if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ SetFillColor(COL_BLACK);
+ else
+ SetFillColor( mrSidebarWin.ColorDark() );
+ SetLineColor();
+ const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( GetSizePixel() ) ) );
+ DrawRect( aRect );
+
+ if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode())
+ {
+ //draw rect around button
+ SetFillColor(COL_BLACK);
+ SetLineColor(COL_WHITE);
+ }
+ else
+ {
+ //draw button
+ Gradient aGradient;
+ if ( IsMouseOver() )
+ aGradient = Gradient( GRADIENT_LINEAR,
+ ColorFromAlphaColor( 80, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ),
+ ColorFromAlphaColor( 15, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ));
+ else
+ aGradient = Gradient( GRADIENT_LINEAR,
+ ColorFromAlphaColor( 15, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ),
+ ColorFromAlphaColor( 80, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ));
+ DrawGradient( aRect, aGradient );
+
+ //draw rect around button
+ SetFillColor();
+ SetLineColor( ColorFromAlphaColor( 90, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ));
+ }
+ DrawRect( aRect );
+
+ if ( mrSidebarWin.IsPreview() )
+ {
+ Font aOldFont( mrSidebarWin.GetFont() );
+ Font aFont(aOldFont);
+ Color aCol( COL_BLACK);
+ aFont.SetColor( aCol );
+ aFont.SetHeight(200);
+ aFont.SetWeight(WEIGHT_MEDIUM);
+ SetFont( aFont );
+ DrawText( aRect ,
+ rtl::OUString::createFromAscii("Edit Note"),
+ TEXT_DRAW_CENTER );
+ SetFont( aOldFont );
+ }
+ else
+ {
+ Rectangle aSymbolRect( aRect );
+ // 25% distance to the left and right button border
+ const long nBorderDistanceLeftAndRight = ((aSymbolRect.GetWidth()*250)+500)/1000;
+ aSymbolRect.Left()+=nBorderDistanceLeftAndRight;
+ aSymbolRect.Right()-=nBorderDistanceLeftAndRight;
+ // 40% distance to the top button border
+ const long nBorderDistanceTop = ((aSymbolRect.GetHeight()*400)+500)/1000;
+ aSymbolRect.Top()+=nBorderDistanceTop;
+ // 15% distance to the bottom button border
+ const long nBorderDistanceBottom = ((aSymbolRect.GetHeight()*150)+500)/1000;
+ aSymbolRect.Bottom()-=nBorderDistanceBottom;
+ DecorationView aDecoView( this );
+ aDecoView.DrawSymbol( aSymbolRect, SYMBOL_SPIN_DOWN,
+ ( Application::GetSettings().GetStyleSettings().GetHighContrastMode()
+ ? Color( COL_WHITE )
+ : Color( COL_BLACK ) ) );
+ }
+}
+
+void AnnotationMenuButton::KeyInput( const KeyEvent& rKeyEvt )
+{
+ const KeyCode& rKeyCode = rKeyEvt.GetKeyCode();
+ const USHORT nKey = rKeyCode.GetCode();
+ if ( nKey == KEY_TAB )
+ {
+ mrSidebarWin.ActivatePostIt();
+ mrSidebarWin.GrabFocus();
+ }
+ else
+ {
+ MenuButton::KeyInput( rKeyEvt );
+ }
+}
+
+} } // end of namespace sw::annotation
+
diff --git a/sw/source/ui/docvw/AnnotationMenuButton.hxx b/sw/source/ui/docvw/AnnotationMenuButton.hxx
new file mode 100644
index 000000000000..c74719f1cad4
--- /dev/null
+++ b/sw/source/ui/docvw/AnnotationMenuButton.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _ANNOTATIONMENUBUTTON_HXX
+#define _ANNOTATIONMENUBUTTON_HXX
+
+#include <vcl/menubtn.hxx>
+
+namespace sw { namespace sidebarwindows {
+ class SwSidebarWin;
+} }
+
+namespace sw { namespace annotation {
+
+class AnnotationMenuButton : public MenuButton
+{
+ public:
+ AnnotationMenuButton( sw::sidebarwindows::SwSidebarWin& rSidebarWin );
+ ~AnnotationMenuButton();
+
+ // overloaded <MenuButton> methods
+ virtual void Select();
+
+ // overloaded <Window> methods
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Paint( const Rectangle& rRect );
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+
+ private:
+ sw::sidebarwindows::SwSidebarWin& mrSidebarWin;
+};
+
+} } // end of namespace sw::annotation
+
+#endif
diff --git a/sw/source/ui/docvw/AnnotationWin.cxx b/sw/source/ui/docvw/AnnotationWin.cxx
new file mode 100644
index 000000000000..91ea1e13b077
--- /dev/null
+++ b/sw/source/ui/docvw/AnnotationWin.cxx
@@ -0,0 +1,292 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <AnnotationWin.hxx>
+
+#include <AnnotationMenuButton.hxx>
+#include <PostItMgr.hxx>
+
+#include <annotation.hrc>
+#include <popup.hrc>
+#include <cmdid.h>
+
+#include <vcl/menu.hxx>
+
+#include <svl/undo.hxx>
+#include <unotools/syslocale.hxx>
+#include <svl/languageoptions.hxx>
+
+#include <editeng/postitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/langitem.hxx>
+
+#include <editeng/editview.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editobj.hxx>
+
+#include <docufld.hxx> // SwPostItField
+#include <txtfld.hxx>
+#include <ndtxt.hxx>
+#include <view.hxx>
+#include <wrtsh.hxx>
+#include <docsh.hxx>
+#include <doc.hxx>
+#include <SwUndoField.hxx>
+
+namespace sw { namespace annotation {
+
+SwAnnotationWin::SwAnnotationWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem,
+ SwFmtFld* aField )
+ : SwSidebarWin( rEditWin, nBits, aMgr, aBits, rSidebarItem )
+ , mpFmtFld(aField)
+ , mpFld( static_cast<SwPostItField*>(aField->GetFld()))
+ , mpButtonPopup(0)
+{
+}
+
+SwAnnotationWin::~SwAnnotationWin()
+{
+ delete mpButtonPopup;
+}
+
+void SwAnnotationWin::SetPostItText()
+{
+ // get text from SwPostItField and insert into our textview
+ Engine()->SetModifyHdl( Link() );
+ Engine()->EnableUndo( FALSE );
+ mpFld = static_cast<SwPostItField*>(mpFmtFld->GetFld());
+ if( mpFld->GetTextObject() )
+ Engine()->SetText( *mpFld->GetTextObject() );
+ else
+ {
+ Engine()->Clear();
+ GetOutlinerView()->SetAttribs(DefaultItem());
+ GetOutlinerView()->InsertText(mpFld->GetPar2(),false);
+ }
+
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+ Engine()->EnableUndo( TRUE );
+ Engine()->SetModifyHdl( LINK( this, SwAnnotationWin, ModifyHdl ) );
+ Invalidate();
+}
+
+void SwAnnotationWin::UpdateData()
+{
+ if ( Engine()->IsModified() )
+ {
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ SwField* pOldField = mpFld->Copy();
+ mpFld->SetPar2(Engine()->GetEditEngine().GetText());
+ mpFld->SetTextObject(Engine()->CreateParaObject());
+ DocView().GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
+ delete pOldField;
+ // so we get a new layout of notes (anchor position is still the same and we would otherwise not get one)
+ Mgr().SetLayout();
+ // #i98686# if we have several views, all notes should update their text
+ mpFmtFld->Broadcast(SwFmtFldHint( 0, SWFMTFLD_CHANGED));
+ DocView().GetDocShell()->SetModified();
+ }
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+}
+
+void SwAnnotationWin::Delete()
+{
+ SwSidebarWin::Delete();
+ // we delete the field directly, the Mgr cleans up the PostIt by listening
+ DocView().GetWrtShellPtr()->GotoField(*mpFmtFld);
+ GrabFocusToDocument();
+ DocView().GetWrtShellPtr()->DelRight();
+}
+
+void SwAnnotationWin::GotoPos()
+{
+ DocView().GetDocShell()->GetWrtShell()->GotoField(*mpFmtFld);
+}
+
+sal_uInt32 SwAnnotationWin::MoveCaret()
+{
+ // if this is an answer, do not skip over all following ones, but insert directly behind the current one
+ // but when just leaving a note, skip all following ones as well to continue typing
+ return Mgr().IsAnswer()
+ ? 1
+ : 1 + CountFollowing();
+}
+
+//returns true, if there is another note right before this note
+bool SwAnnotationWin::CalcFollow()
+{
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ SwTxtAttr * const pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
+ aPosition.nContent.GetIndex() - 1, RES_TXTATR_FIELD );
+ const SwField* pFld = pTxtAttr ? pTxtAttr->GetFld().GetFld() : 0;
+ return pFld && (pFld->Which()== RES_POSTITFLD);
+}
+
+// counts how many SwPostItField we have right after the current one
+sal_uInt32 SwAnnotationWin::CountFollowing()
+{
+ sal_uInt32 aCount = 1; // we start with 1, so we have to subtract one at the end again
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+
+ SwTxtAttr * pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
+ aPosition.nContent.GetIndex() + 1,
+ RES_TXTATR_FIELD );
+ SwField* pFld = pTxtAttr
+ ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld())
+ : 0;
+ while ( pFld && ( pFld->Which()== RES_POSTITFLD ) )
+ {
+ aCount++;
+ pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
+ aPosition.nContent.GetIndex() + aCount,
+ RES_TXTATR_FIELD );
+ pFld = pTxtAttr
+ ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld())
+ : 0;
+ }
+ return aCount - 1;
+}
+
+MenuButton* SwAnnotationWin::CreateMenuButton()
+{
+ mpButtonPopup = new PopupMenu(SW_RES(MN_ANNOTATION_BUTTON));
+ XubString aText = mpButtonPopup->GetItemText( FN_DELETE_NOTE_AUTHOR );
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UNDO_ARG1,GetAuthor());
+ aText = aRewriter.Apply(aText);
+ mpButtonPopup->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
+ MenuButton* pMenuButton = new AnnotationMenuButton( *this );
+ pMenuButton->SetPopupMenu( mpButtonPopup );
+ pMenuButton->Show();
+ return pMenuButton;
+}
+
+void SwAnnotationWin::InitAnswer(OutlinerParaObject* pText)
+{
+ //collect our old meta data
+ SwSidebarWin* pWin = Mgr().GetNextPostIt(KEY_PAGEUP, this);
+ const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
+ String aText = String(SW_RES(STR_REPLY));
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UNDO_ARG1, pWin->GetAuthor());
+ aText = aRewriter.Apply(aText);
+ aText.Append(String(rtl::OUString::createFromAscii(" (") +
+ String(rLocalData.getDate( pWin->GetDate())) + rtl::OUString::createFromAscii(", ") +
+ String(rLocalData.getTime( pWin->GetTime(),false)) + rtl::OUString::createFromAscii("): \"")));
+ GetOutlinerView()->InsertText(aText,false);
+
+ // insert old, selected text or "..."
+ // TOOD: iterate over all paragraphs, not only first one to find out if it is empty
+ if (pText->GetTextObject().GetText(0) != String(rtl::OUString::createFromAscii("")))
+ GetOutlinerView()->GetEditView().InsertText(pText->GetTextObject());
+ else
+ GetOutlinerView()->InsertText(rtl::OUString::createFromAscii("..."),false);
+ GetOutlinerView()->InsertText(rtl::OUString::createFromAscii("\"\n"),false);
+
+ GetOutlinerView()->SetSelection(ESelection(0x0,0x0,0xFFFF,0xFFFF));
+ SfxItemSet aAnswerSet( DocView().GetDocShell()->GetPool() );
+ aAnswerSet.Put(SvxFontHeightItem(200,80,EE_CHAR_FONTHEIGHT));
+ aAnswerSet.Put(SvxPostureItem(ITALIC_NORMAL,EE_CHAR_ITALIC));
+ GetOutlinerView()->SetAttribs(aAnswerSet);
+ GetOutlinerView()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
+
+ //remove all attributes and reset our standard ones
+ GetOutlinerView()->GetEditView().RemoveAttribsKeepLanguages(true);
+ GetOutlinerView()->SetAttribs(DefaultItem());
+ // lets insert an undo step so the initial text can be easily deleted
+ // but do not use UpdateData() directly, would set modified state again and reentrance into Mgr
+ Engine()->SetModifyHdl( Link() );
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ SwField* pOldField = mpFld->Copy();
+ mpFld->SetPar2(Engine()->GetEditEngine().GetText());
+ mpFld->SetTextObject(Engine()->CreateParaObject());
+ DocView().GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
+ delete pOldField;
+ Engine()->SetModifyHdl( LINK( this, SwAnnotationWin, ModifyHdl ) );
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+}
+
+SvxLanguageItem SwAnnotationWin::GetLanguage(void)
+{
+ // set initial language for outliner
+ USHORT nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( mpFld->GetLanguage() );
+ USHORT nLangWhichId = 0;
+ switch (nScriptType)
+ {
+ case SCRIPTTYPE_LATIN : nLangWhichId = EE_CHAR_LANGUAGE ; break;
+ case SCRIPTTYPE_ASIAN : nLangWhichId = EE_CHAR_LANGUAGE_CJK; break;
+ case SCRIPTTYPE_COMPLEX : nLangWhichId = EE_CHAR_LANGUAGE_CTL; break;
+ default: DBG_ERROR("GetLanguage: wrong script tye");
+ }
+ return SvxLanguageItem(mpFld->GetLanguage(),nLangWhichId);
+}
+
+bool SwAnnotationWin::IsProtected()
+{
+ return SwSidebarWin::IsProtected() ||
+ GetLayoutStatus() == SwPostItHelper::DELETED ||
+ ( mpFmtFld ? mpFmtFld->IsProtect() : false );
+}
+
+String SwAnnotationWin::GetAuthor()
+{
+ return mpFld->GetPar1();
+}
+
+Date SwAnnotationWin::GetDate()
+{
+ return mpFld->GetDate();
+}
+
+Time SwAnnotationWin::GetTime()
+{
+ return mpFld->GetTime();
+}
+
+} } // end of namespace sw::annotation
diff --git a/sw/source/ui/docvw/PostItMgr.cxx b/sw/source/ui/docvw/PostItMgr.cxx
index 25adc5006c4d..c6b0ad4a136f 100644
--- a/sw/source/ui/docvw/PostItMgr.cxx
+++ b/sw/source/ui/docvw/PostItMgr.cxx
@@ -31,6 +31,15 @@
#include "PostItMgr.hxx"
#include <postithelper.hxx>
+#include <SidebarWin.hxx>
+#include <AnnotationWin.hxx>
+#include <frmsidebarwincontainer.hxx>
+#include <accmap.hxx>
+
+#include <SidebarWindowsConsts.hxx>
+#include <AnchorOverlayObject.hxx>
+#include <ShadowOverlayObject.hxx>
+
#include <vcl/svapp.hxx>
#include <vcl/scrbar.hxx>
#include <vcl/outdev.hxx>
@@ -45,7 +54,6 @@
#include <fmtfld.hxx>
#include <docufld.hxx>
#include <edtwin.hxx>
-#include <postit.hxx>
#include <txtfld.hxx>
#include <ndtxt.hxx>
#include <redline.hxx>
@@ -55,7 +63,7 @@
#include <tools/color.hxx>
#include <swmodule.hxx>
-#include <docvw.hrc>
+#include <annotation.hrc>
#include "cmdid.h"
#include <SwRewriter.hxx>
@@ -80,8 +88,8 @@
#include "swevent.hxx"
-// distance between ankor Y and initial note position
-#define POSTIT_INITIAL_ANKOR_DISTANCE 20
+// distance between Anchor Y and initial note position
+#define POSTIT_INITIAL_ANCHOR_DISTANCE 20
//distance between two postits
#define POSTIT_SPACE_BETWEEN 8
#define POSTIT_MINIMUMSIZE_WITH_META 60
@@ -90,6 +98,8 @@
// if we layout more often we stop, this should never happen
#define MAX_LOOP_COUNT 50
+using namespace sw::sidebarwindows;
+
/*
bool comp_author( const SwPostItItem* a, const SwPostItItem* b)
{
@@ -102,16 +112,22 @@ bool comp_date( const SwPostItItem* a, const SwPostItItem* b)
}
*/
-// if position is on the same line, sort by x (Left) position, otherwise by y(Bottom) position
-// if two notes are at the same position, sort by logical node position
-bool comp_pos(const SwMarginItem *a, const SwMarginItem *b)
+//
+bool comp_pos(const SwSidebarItem* a, const SwSidebarItem* b)
{
- return (a->mPos.Bottom() == b->mPos.Bottom()) ?
- ( ((a->mPos.Left() == b->mPos.Left()) && (a->GetBroadCaster()->ISA(SwFmtFld) && b->GetBroadCaster()->ISA(SwFmtFld)) ) ?
- *(static_cast<SwFmtFld*>(a->GetBroadCaster())->GetTxtFld()->GetStart()) <
- *(static_cast<SwFmtFld*>(b->GetBroadCaster())->GetTxtFld()->GetStart())
- : a->mPos.Left() < b->mPos.Left() )
- : a->mPos.Bottom() < b->mPos.Bottom();
+ // --> OD 2010-01-19 #i88070#
+ // sort by anchor position
+//// if position is on the same line, sort by x (Left) position, otherwise by y(Bottom) position
+//// if two notes are at the same position, sort by logical node position
+// return (a->maLayoutInfo.mPosition.Bottom() == b->maLayoutInfo.mPosition.Bottom())
+// ? ( ( (a->maLayoutInfo.mPosition.Left() == b->maLayoutInfo.mPosition.Left()) &&
+// (a->GetBroadCaster()->ISA(SwFmtFld) && b->GetBroadCaster()->ISA(SwFmtFld)) )
+// ? *(static_cast<SwFmtFld*>(a->GetBroadCaster())->GetTxtFld()->GetStart()) <
+// *(static_cast<SwFmtFld*>(b->GetBroadCaster())->GetTxtFld()->GetStart())
+// : a->maLayoutInfo.mPosition.Left() < b->maLayoutInfo.mPosition.Left() )
+// : a->maLayoutInfo.mPosition.Bottom() < b->maLayoutInfo.mPosition.Bottom();
+ return a->GetAnchorPosition() < b->GetAnchorPosition();
+ // <--
}
SwPostItMgr::SwPostItMgr(SwView* pView)
@@ -127,12 +143,14 @@ SwPostItMgr::SwPostItMgr(SwView* pView)
, mbReadOnly(mpView->GetDocShell()->IsReadOnly())
, mbDeleteNote(true)
, mpAnswer(0)
+ , mbIsShowAnchor( false )
+ , mpFrmSidebarWinContainer( 0 )
{
if(!mpView->GetDrawView() )
mpView->GetWrtShell().MakeDrawView();
SwNoteProps aProps;
- mpIsShowAnkor = aProps.IsShowAnkor();
+ mbIsShowAnchor = aProps.IsShowAnchor();
//make sure we get the colour yellow always, even if not the first one of comments or redlining
SW_MOD()->GetRedlineAuthor();
@@ -140,7 +158,7 @@ SwPostItMgr::SwPostItMgr(SwView* pView)
// collect all PostIts and redline comments that exist after loading the document
// don't check for existance for any of them, don't focus them
AddPostIts(false,false);
- /* this code can be used once we want redline comments in the margin
+ /* this code can be used once we want redline comments in the Sidebar
AddRedlineComments(false,false);
*/
// we want to receive stuff like SFX_HINT_DOCCHANGED
@@ -156,27 +174,30 @@ SwPostItMgr::~SwPostItMgr()
{
if ( mnEventId )
Application::RemoveUserEvent( mnEventId );
- // forget about all our margin windows
- RemoveMarginWin();
+ // forget about all our Sidebar windows
+ RemoveSidebarWin();
EndListening( *mpView->GetDocShell() );
for(std::vector<SwPostItPageItem*>::iterator i = mPages.begin(); i!= mPages.end() ; i++)
delete (*i);
mPages.clear();
+
+ delete mpFrmSidebarWinContainer;
+ mpFrmSidebarWinContainer = 0;
}
void SwPostItMgr::CheckForRemovedPostIts()
{
bool bRemoved = false;
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end(); )
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end(); )
{
- std::list<SwMarginItem*>::iterator it = i++;
+ std::list<SwSidebarItem*>::iterator it = i++;
if ( !(*it)->UseElement() )
{
- SwMarginItem* p = (*it);
+ SwSidebarItem* p = (*it);
mvPostItFlds.remove(*it);
- if (GetActivePostIt() == p->pPostIt)
- SetActivePostIt(0);
+ if (GetActiveSidebarWin() == p->pPostIt)
+ SetActiveSidebarWin(0);
if (p->pPostIt)
delete p->pPostIt;
delete p;
@@ -204,7 +225,7 @@ void SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistance, bool b
{
if (bCheckExistance)
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->GetBroadCaster() == pItem )
return;
@@ -212,7 +233,7 @@ void SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistance, bool b
}
mbLayout = bFocus;
if (pItem->ISA(SwFmtFld))
- mvPostItFlds.push_back(new SwPostItItem(static_cast<SwFmtFld*>(pItem), true, bFocus) );
+ mvPostItFlds.push_back(new SwAnnotationItem(static_cast<SwFmtFld*>(pItem), true, bFocus) );
/*
else
if (pItem->ISA(SwRedline))
@@ -225,13 +246,13 @@ void SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistance, bool b
void SwPostItMgr::RemoveItem( SfxBroadcaster* pBroadcast )
{
EndListening(*pBroadcast);
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->GetBroadCaster() == pBroadcast )
{
- SwMarginItem* p = (*i);
- if (GetActivePostIt() == p->pPostIt)
- SetActivePostIt(0);
+ SwSidebarItem* p = (*i);
+ if (GetActiveSidebarWin() == p->pPostIt)
+ SetActiveSidebarWin(0);
mvPostItFlds.remove(*i);
delete p->pPostIt;
delete p;
@@ -379,7 +400,7 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
case SWFMTFLD_CHANGED:
{
SwFmtFld* pFmtFld = dynamic_cast<SwFmtFld*>(&rBC);
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( pFmtFld == (*i)->GetBroadCaster() )
{
@@ -396,7 +417,7 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
case SWFMTFLD_LANGUAGE:
{
SwFmtFld* pFmtFld = dynamic_cast<SwFmtFld*>(&rBC);
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( pFmtFld == (*i)->GetBroadCaster() )
{
@@ -410,7 +431,8 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
case SCRIPTTYPE_ASIAN : nLangWhichId = EE_CHAR_LANGUAGE_CJK; break;
case SCRIPTTYPE_COMPLEX : nLangWhichId = EE_CHAR_LANGUAGE_CTL; break;
}
- (*i)->pPostIt->SetLanguage(SvxLanguageItem((*i)->GetFmtFld()->GetFld()->GetLanguage(),nLangWhichId));
+ (*i)->pPostIt->SetLanguage( SvxLanguageItem((*i)->GetFmtFld()->GetFld()->GetLanguage(),
+ nLangWhichId) );
}
break;
}
@@ -429,7 +451,7 @@ void SwPostItMgr::Focus(SfxBroadcaster& rBC)
mpView->ExecViewOptions(aRequest);
}
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
// field to get the focus is the broadcaster
if ( &rBC == (*i)->GetBroadCaster() )
@@ -463,9 +485,9 @@ bool SwPostItMgr::CalcRects()
PreparePageContainer();
if ( !mvPostItFlds.empty() )
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- SwMarginItem* pItem = (*i);
+ SwSidebarItem* pItem = (*i);
if ( !pItem->UseElement() )
{
DBG_ERROR("PostIt is not in doc or other wrong use");
@@ -474,32 +496,30 @@ bool SwPostItMgr::CalcRects()
}
//save old rect and visible state
- SwRect aOldRect(pItem->mPos);
+ SwRect aOldRect(pItem->maLayoutInfo.mPosition);
SwPostItHelper::SwLayoutStatus eOldStatus = pItem->mLayoutStatus;
std::vector< SwLayoutInfo > aInfo;
- SwPosition aPosition = pItem->GetPosition();
- pItem->mLayoutStatus = SwPostItHelper::getLayoutInfos( aInfo, aPosition );
+ {
+ SwPosition aPosition = pItem->GetAnchorPosition();
+ pItem->mLayoutStatus = SwPostItHelper::getLayoutInfos( aInfo, aPosition );
+ }
if( aInfo.size() )
{
- SwLayoutInfo& rInfo = aInfo[0];
- pItem->mPos = rInfo.mPosition;
- pItem->mPagePos = rInfo.mPageFrame;
- pItem->mFramePos = rInfo.mPagePrtArea;
- pItem->bMarginSide = rInfo.mbMarginSide;
- pItem->mnPageNumber = rInfo.mnPageNumber;
- pItem->mRedlineAuthor = rInfo.mRedlineAuthor;
+ pItem->maLayoutInfo = aInfo[0];
}
- bChange = bChange || (pItem->mPos != aOldRect) || (eOldStatus != pItem->mLayoutStatus);
+ bChange = bChange ||
+ ( pItem->maLayoutInfo.mPosition != aOldRect ) ||
+ ( eOldStatus != pItem->mLayoutStatus );
}
// show notes in right order in navigator
- //prevent ankors during layout to overlap, e.g. when moving a frame
+ //prevent Anchors during layout to overlap, e.g. when moving a frame
Sort(SORT_POS);
// sort the items into the right page vector, so layout can be done by page
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- SwMarginItem* pItem = (*i);
+ SwSidebarItem* pItem = (*i);
if( SwPostItHelper::INVISIBLE == pItem->mLayoutStatus )
{
if (pItem->pPostIt)
@@ -517,7 +537,7 @@ bool SwPostItMgr::CalcRects()
}
}
- const unsigned long aPageNum = pItem->mnPageNumber;
+ const unsigned long aPageNum = pItem->maLayoutInfo.mnPageNumber;
if (aPageNum > mPages.size())
{
const unsigned long nNumberOfPages = mPages.size();
@@ -525,8 +545,8 @@ bool SwPostItMgr::CalcRects()
mPages.push_back( new SwPostItPageItem());
}
mPages[aPageNum-1]->mList->push_back(pItem);
- mPages[aPageNum-1]->mPageRect = pItem->mPagePos;
- mPages[aPageNum-1]->bMarginSide = pItem->bMarginSide;
+ mPages[aPageNum-1]->mPageRect = pItem->maLayoutInfo.mPageFrame;
+ mPages[aPageNum-1]->eSidebarPosition = pItem->maLayoutInfo.meSidebarPosition;
}
if (!bChange && mpWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE))
@@ -555,9 +575,9 @@ bool SwPostItMgr::CalcRects()
bool SwPostItMgr::HasScrollbars() const
{
- for(std::list<SwMarginItem*>::const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- if ((*i)->bShow && (*i)->pPostIt && (*i)->pPostIt->Scrollbar())
+ if ((*i)->bShow && (*i)->pPostIt && (*i)->pPostIt->HasScrollbar())
return true;
}
return false;
@@ -609,63 +629,80 @@ void SwPostItMgr::LayoutPostIts()
// only layout if there are notes on this page
if (mPages[n]->mList->size()>0)
{
- std::list<SwMarginWin*> aVisiblePostItList;
+ std::list<SwSidebarWin*> aVisiblePostItList;
unsigned long lNeededHeight = 0;
long mlPageBorder = 0;
long mlPageEnd = 0;
- for(SwMarginItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
{
- SwMarginItem* pItem = (*i);
- SwMarginWin* pPostIt = pItem->pPostIt;
+ SwSidebarItem* pItem = (*i);
+ SwSidebarWin* pPostIt = pItem->pPostIt;
- if (mPages[n]->bMarginSide)
+ if (mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT )
{
// x value for notes positioning
mlPageBorder = mpEditWin->LogicToPixel( Point( mPages[n]->mPageRect.Left(), 0)).X() - GetSidebarWidth(true);// - GetSidebarBorderWidth(true);
//bending point
- mlPageEnd = mpWrtShell->getIDocumentSettingAccess()->get( IDocumentSettingAccess::BROWSE_MODE) ? pItem->mFramePos.Left() : mPages[n]->mPageRect.Left() + 350;
+ mlPageEnd =
+ mpWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)
+ ? pItem->maLayoutInfo.mPagePrtArea.Left()
+ : mPages[n]->mPageRect.Left() + 350;
}
- else
+ else if (mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT )
{
// x value for notes positioning
mlPageBorder = mpEditWin->LogicToPixel( Point(mPages[n]->mPageRect.Right(), 0)).X() + GetSidebarBorderWidth(true);
//bending point
- mlPageEnd = mpWrtShell->getIDocumentSettingAccess()->get( IDocumentSettingAccess::BROWSE_MODE) ? pItem->mFramePos.Right() : mPages[n]->mPageRect.Right() - 350;
+ mlPageEnd =
+ mpWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)
+ ? pItem->maLayoutInfo.mPagePrtArea.Right() :
+ mPages[n]->mPageRect.Right() - 350;
}
if (pItem->bShow)
{
- long Y = mpEditWin->LogicToPixel( Point(0,pItem->mPos.Bottom())).Y();
+ long Y = mpEditWin->LogicToPixel( Point(0,pItem->maLayoutInfo.mPosition.Bottom())).Y();
long aPostItHeight = 0;
if (!pPostIt)
{
- pPostIt = (*i)->GetMarginWindow(static_cast<Window*>(&mpView->GetEditWin()),WINDOW_CONTROL|WB_NODIALOGCONTROL,this,0);
+ pPostIt = (*i)->GetSidebarWindow( mpView->GetEditWin(),
+ WB_DIALOGCONTROL,
+ *this,
+ 0 );
pPostIt->InitControls();
pPostIt->SetReadonly(mbReadOnly);
pItem->pPostIt = pPostIt;
if (mpAnswer)
{
if (pPostIt->CalcFollow()) //do we really have another note in front of this one
- static_cast<SwPostIt*>(pPostIt)->InitAnswer(mpAnswer);
+ static_cast<sw::annotation::SwAnnotationWin*>(pPostIt)->InitAnswer(mpAnswer);
delete mpAnswer;
mpAnswer = 0;
}
}
- if (pItem->pPostIt->ISA(SwPostIt))
- {
- static_cast<SwPostIt*>(pPostIt)->SetChangeTracking(pItem->mLayoutStatus,GetColorAnkor(pItem->mRedlineAuthor));
- }
- pPostIt->SetMarginSide(mPages[n]->bMarginSide);
+ pPostIt->SetChangeTracking(
+ pItem->mLayoutStatus,
+ GetColorAnchor(pItem->maLayoutInfo.mRedlineAuthor));
+ pPostIt->SetSidebarPosition(mPages[n]->eSidebarPosition);
pPostIt->SetFollow(pPostIt->CalcFollow());
- aPostItHeight = ( pPostIt->GetPostItTextHeight() < pPostIt->GetMinimumSizeWithoutMeta() ? pPostIt->GetMinimumSizeWithoutMeta() : pPostIt->GetPostItTextHeight() ) + pPostIt->GetMetaHeight();
- pPostIt->SetPosSizePixelRect( mlPageBorder ,Y-GetInitialAnchorDistance(), GetNoteWidth() ,aPostItHeight,pItem->mPos, mlPageEnd);
+ aPostItHeight = ( pPostIt->GetPostItTextHeight() < pPostIt->GetMinimumSizeWithoutMeta()
+ ? pPostIt->GetMinimumSizeWithoutMeta()
+ : pPostIt->GetPostItTextHeight() )
+ + pPostIt->GetMetaHeight();
+ pPostIt->SetPosSizePixelRect( mlPageBorder ,
+ Y - GetInitialAnchorDistance(),
+ GetNoteWidth() ,
+ aPostItHeight,
+ pItem->maLayoutInfo.mPosition,
+ mlPageEnd );
+ pPostIt->ChangeSidebarItem( *pItem );
if (pItem->bFocus)
{
mbLayout = true;
- pPostIt->GrabFocus();
+ pPostIt->GrabFocus();
pItem->bFocus = false;
}
// only the visible postits are used for the final layout
@@ -705,7 +742,7 @@ void SwPostItMgr::LayoutPostIts()
- enlarge all notes till GetNextBorder(), as we resized to average value before
*/
//lets hide the ones which overlap the page
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
if (mPages[n]->lOffset != 0)
(*i)->TranslateTopPosition(mPages[n]->lOffset);
@@ -720,24 +757,28 @@ void SwPostItMgr::LayoutPostIts()
{
if (mpEditWin->PixelToLogic(Point(0,(*i)->VirtualPos().Y())).Y() < (mPages[n]->mPageRect.Top()+aSidebarheight))
{
- if (mPages[n]->bMarginSide)
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Left(),mPages[n]->mPageRect.Top()));
- else
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Right(),mPages[n]->mPageRect.Top()));
+ if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT )
+ (*i)->ShowAnchorOnly(Point( mPages[n]->mPageRect.Left(),
+ mPages[n]->mPageRect.Top()));
+ else if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT )
+ (*i)->ShowAnchorOnly(Point( mPages[n]->mPageRect.Right(),
+ mPages[n]->mPageRect.Top()));
}
else
{
- if (mPages[n]->bMarginSide)
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Left(),mPages[n]->mPageRect.Bottom()));
- else
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Right(),mPages[n]->mPageRect.Bottom()));
+ if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT )
+ (*i)->ShowAnchorOnly(Point(mPages[n]->mPageRect.Left(),
+ mPages[n]->mPageRect.Bottom()));
+ else if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT )
+ (*i)->ShowAnchorOnly(Point(mPages[n]->mPageRect.Right(),
+ mPages[n]->mPageRect.Bottom()));
}
DBG_ASSERT(mPages[n]->bScrollbar,"SwPostItMgr::LayoutByPage(): note overlaps, but bScrollbar is not true");
}
}
// do some magic so we really see the focused note
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
if ((*i)->HasChildPathFocus())
{
@@ -748,7 +789,7 @@ void SwPostItMgr::LayoutPostIts()
}
else
{
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
(*i)->SetPosAndSize();
bool bOldScrollbar = mPages[n]->bScrollbar;
@@ -767,9 +808,9 @@ void SwPostItMgr::LayoutPostIts()
if (!ShowNotes())
{ // we do not want to see the notes anymore -> Options-Writer-View-Notes
bool bRepair = false;
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- SwMarginItem* pItem = (*i);
+ SwSidebarItem* pItem = (*i);
if ( !pItem->UseElement() )
{
DBG_ERROR("PostIt is not in doc!");
@@ -782,7 +823,7 @@ void SwPostItMgr::LayoutPostIts()
(*i)->pPostIt->HideNote();
if ((*i)->pPostIt->HasChildPathFocus())
{
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
(*i)->pPostIt->GrabFocusToDocument();
}
}
@@ -809,7 +850,7 @@ bool SwPostItMgr::BorderOverPageBorder(unsigned long aPage) const
return false;
}
- SwMarginItem_iterator aItem = mPages[aPage-1]->mList->end();
+ SwSidebarItem_iterator aItem = mPages[aPage-1]->mList->end();
--aItem;
DBG_ASSERT ((*aItem)->pPostIt,"BorderOverPageBorder: NULL postIt, should never happen");
if ((*aItem)->pPostIt)
@@ -832,9 +873,9 @@ void SwPostItMgr::Scroll(const long lScroll,const unsigned long aPage)
const bool bOldUp = ArrowEnabled(KEY_PAGEUP,aPage);
const bool bOldDown = ArrowEnabled(KEY_PAGEDOWN,aPage);
const long aSidebarheight = mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height();
- for(SwMarginItem_iterator i = mPages[aPage-1]->mList->begin(); i!= mPages[aPage-1]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[aPage-1]->mList->begin(); i!= mPages[aPage-1]->mList->end(); i++)
{
- SwMarginWin* pPostIt = (*i)->pPostIt;
+ SwSidebarWin* pPostIt = (*i)->pPostIt;
// if this is an answer, we should take the normal position and not the real, slightly moved position
pPostIt->SetVirtualPosSize(pPostIt->GetPosPixel(),pPostIt->GetSizePixel());
pPostIt->TranslateTopPosition(lScroll);
@@ -851,17 +892,17 @@ void SwPostItMgr::Scroll(const long lScroll,const unsigned long aPage)
{
if ( mpEditWin->PixelToLogic(Point(0,pPostIt->VirtualPos().Y())).Y() < (mPages[aPage-1]->mPageRect.Top()+aSidebarheight))
{
- if (mPages[aPage-1]->bMarginSide)
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Top()));
- else
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Top()));
+ if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Top()));
+ else if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Top()));
}
else
{
- if (mPages[aPage-1]->bMarginSide)
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Bottom()));
- else
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Bottom()));
+ if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Bottom()));
+ else if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Bottom()));
}
}
}
@@ -874,7 +915,7 @@ void SwPostItMgr::Scroll(const long lScroll,const unsigned long aPage)
}
}
-void SwPostItMgr::AutoScroll(const SwMarginWin* pPostIt,const unsigned long aPage )
+void SwPostItMgr::AutoScroll(const SwSidebarWin* pPostIt,const unsigned long aPage )
{
// otherwise all notes are visible
if (mPages[aPage-1]->bScrollbar)
@@ -894,7 +935,7 @@ void SwPostItMgr::AutoScroll(const SwMarginWin* pPostIt,const unsigned long aPag
}
}
-void SwPostItMgr::MakeVisible(const SwMarginWin* pPostIt,long aPage )
+void SwPostItMgr::MakeVisible(const SwSidebarWin* pPostIt,long aPage )
{
if (aPage == -1)
{
@@ -903,7 +944,7 @@ void SwPostItMgr::MakeVisible(const SwMarginWin* pPostIt,long aPage )
{
if (mPages[n]->mList->size()>0)
{
- for(SwMarginItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
{
if ((*i)->pPostIt==pPostIt)
{
@@ -952,7 +993,7 @@ Color SwPostItMgr::GetArrowColor(USHORT aDirection,unsigned long aPage) const
}
}
-bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const Rectangle aBorder, long lNeededHeight)
+bool SwPostItMgr::LayoutByPage(std::list<SwSidebarWin*> &aVisiblePostItList,const Rectangle aBorder, long lNeededHeight)
{
/*** General layout idea:***/
// - if we have space left, we always move the current one up,
@@ -982,12 +1023,12 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
bScrollbars = true;
lTopBorder += GetSidebarScrollerHeight() + 10;
lBottomBorder -= (GetSidebarScrollerHeight() + 10);
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
(*i)->SetSize(Size((*i)->VirtualSize().getWidth(),(*i)->GetMinimumSizeWithMeta()));
}
else
{
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
if ( (*i)->VirtualSize().getHeight() > lAverageHeight)
(*i)->SetSize(Size((*i)->VirtualSize().getWidth(),lAverageHeight));
@@ -1004,9 +1045,9 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
loop++;
bDone = true;
lSpaceUsed = lTopBorder + GetSpaceBetween();
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
- SwMarginWin_iterator aNextPostIt = i;
+ SwSidebarWin_iterator aNextPostIt = i;
++aNextPostIt;
if (aNextPostIt !=aVisiblePostItList.end())
@@ -1025,7 +1066,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
if ( ((*i)->VirtualPos().Y()- lTranslatePos - GetSpaceBetween()) > lTopBorder)
{
if ((*aNextPostIt)->IsFollow())
- (*i)->TranslateTopPosition(-1*(lTranslatePos+ANKORLINE_WIDTH));
+ (*i)->TranslateTopPosition(-1*(lTranslatePos+ANCHORLINE_WIDTH));
else
(*i)->TranslateTopPosition(-1*(lTranslatePos+GetSpaceBetween()));
}
@@ -1034,7 +1075,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
long lMoveUp = (*i)->VirtualPos().Y() - lTopBorder;
(*i)->TranslateTopPosition(-1* lMoveUp);
if ((*aNextPostIt)->IsFollow())
- (*aNextPostIt)->TranslateTopPosition( (lTranslatePos+ANKORLINE_WIDTH) - lMoveUp);
+ (*aNextPostIt)->TranslateTopPosition( (lTranslatePos+ANCHORLINE_WIDTH) - lMoveUp);
else
(*aNextPostIt)->TranslateTopPosition( (lTranslatePos+GetSpaceBetween()) - lMoveUp);
}
@@ -1043,7 +1084,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
{
// no space left, left move the next one down
if ((*aNextPostIt)->IsFollow())
- (*aNextPostIt)->TranslateTopPosition(lTranslatePos+ANKORLINE_WIDTH);
+ (*aNextPostIt)->TranslateTopPosition(lTranslatePos+ANCHORLINE_WIDTH);
else
(*aNextPostIt)->TranslateTopPosition(lTranslatePos+GetSpaceBetween());
}
@@ -1062,14 +1103,14 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
}
}
if (aNextPostIt !=aVisiblePostItList.end() && (*aNextPostIt)->IsFollow())
- lSpaceUsed += (*i)->VirtualSize().Height() + ANKORLINE_WIDTH;
+ lSpaceUsed += (*i)->VirtualSize().Height() + ANCHORLINE_WIDTH;
else
lSpaceUsed += (*i)->VirtualSize().Height() + GetSpaceBetween();
}
else
{
//(*i) is the last visible item
- SwMarginWin_iterator aPrevPostIt = i;
+ SwSidebarWin_iterator aPrevPostIt = i;
--aPrevPostIt;
//lTranslatePos = ( (*aPrevPostIt)->VirtualPos().Y() + (*aPrevPostIt)->VirtualSize().Height() + GetSpaceBetween() ) - (*i)->VirtualPos().Y();
lTranslatePos = ( (*aPrevPostIt)->VirtualPos().Y() + (*aPrevPostIt)->VirtualSize().Height() ) - (*i)->VirtualPos().Y();
@@ -1079,7 +1120,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
if ( ((*i)->VirtualPos().Y()+ (*i)->VirtualSize().Height()+lTranslatePos) < lBottomBorder)
{
if ( (*i)->IsFollow() )
- (*i)->TranslateTopPosition(lTranslatePos+ANKORLINE_WIDTH);
+ (*i)->TranslateTopPosition(lTranslatePos+ANCHORLINE_WIDTH);
else
(*i)->TranslateTopPosition(lTranslatePos+GetSpaceBetween());
}
@@ -1111,7 +1152,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
else
{
// only one left, make sure it is not hidden at the top or bottom
- SwMarginWin_iterator i = aVisiblePostItList.begin();
+ SwSidebarWin_iterator i = aVisiblePostItList.begin();
lTranslatePos = lTopBorder - (*i)->VirtualPos().Y();
if (lTranslatePos>0)
{
@@ -1164,11 +1205,11 @@ void SwPostItMgr::AddPostIts(bool bCheckExistance, bool bFocus)
PrepareView(true);
}
-void SwPostItMgr::RemoveMarginWin()
+void SwPostItMgr::RemoveSidebarWin()
{
if (!mvPostItFlds.empty())
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
EndListening( *((*i)->GetBroadCaster()) );
if ((*i)->pPostIt)
@@ -1188,8 +1229,10 @@ void SwPostItMgr::RemoveMarginWin()
void SwPostItMgr::Delete(String aAuthor)
{
mpWrtShell->StartAllAction();
- if ( GetActivePostIt() && (GetActivePostIt()->GetAuthor()==aAuthor) )
- SetActivePostIt(0);
+ if ( HasActiveSidebarWin() && (GetActiveSidebarWin()->GetAuthor()==aAuthor) )
+ {
+ SetActiveSidebarWin(0);
+ }
SwRewriter aRewriter;
String aUndoString = SW_RES(STR_DELETE_AUTHOR_NOTES);
aUndoString += aAuthor;
@@ -1198,7 +1241,7 @@ void SwPostItMgr::Delete(String aAuthor)
std::vector<SwFmtFld*> aTmp;
aTmp.reserve( mvPostItFlds.size() );
- for(std::list<SwMarginItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
+ for(std::list<SwSidebarItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
{
if ((*pPostIt)->GetFmtFld() && ((*pPostIt)->pPostIt->GetAuthor() == aAuthor) )
aTmp.push_back( (*pPostIt)->GetFmtFld() );
@@ -1208,36 +1251,6 @@ void SwPostItMgr::Delete(String aAuthor)
mpWrtShell->GotoField( *(*i) );
mpWrtShell->DelRight();
}
- /*
- for(std::list<SwPostItItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end(); )
- {
- SwPostItItem* pItem = (*i);
- SwPostItField* pPostItField = static_cast<SwPostItField*>(pItem->pFmtFld->GetFld());
- if (pPostItField->GetPar1() == aAuthor)
- {
- // stop listening, we delete ourselves
- EndListening( *(pItem->pFmtFld) );
-
- // remove reference to yet-to-die postit
- if (pItem->pPostIt == GetActivePostIt())
- SetActivePostIt(0);
-
- // delete the actual SwPostItField
- mpWrtShell->GotoField(*pItem->pFmtFld);
- mpWrtShell->DelRight();
- i = mvPostItFlds.erase(i);
-
- // delete visual representation
- // lazy delete doesn't work because references to document (mpFmtFld, mpView etc. may be dead before deletion)
- delete pItem->pPostIt;
-
- // delete struct saving the pointers
- delete pItem;
- }
- else
- ++i;
- }
- */
mpWrtShell->EndUndo( UNDO_DELETE );
PrepareView();
mpWrtShell->EndAllAction();
@@ -1249,14 +1262,14 @@ void SwPostItMgr::Delete(String aAuthor)
void SwPostItMgr::Delete()
{
mpWrtShell->StartAllAction();
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
SwRewriter aRewriter;
aRewriter.AddRule(UNDO_ARG1, SW_RES(STR_DELETE_ALL_NOTES) );
mpWrtShell->StartUndo( UNDO_DELETE, &aRewriter );
std::vector<SwFmtFld*> aTmp;
aTmp.reserve( mvPostItFlds.size() );
- for(std::list<SwMarginItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
+ for(std::list<SwSidebarItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
{
if ((*pPostIt)->GetFmtFld())
aTmp.push_back( (*pPostIt)->GetFmtFld() );
@@ -1294,7 +1307,7 @@ void SwPostItMgr::Delete()
void SwPostItMgr::Hide(SwPostItField* pPostItField )
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ((*i)->GetFmtFld())
{
@@ -1313,7 +1326,7 @@ void SwPostItMgr::Hide(SwPostItField* pPostItField )
void SwPostItMgr::Hide( const String& rAuthor )
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->pPostIt && ((*i)->pPostIt->GetAuthor() == rAuthor) )
{
@@ -1327,7 +1340,7 @@ void SwPostItMgr::Hide( const String& rAuthor )
void SwPostItMgr::Hide()
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
(*i)->bShow = false;
(*i)->pPostIt->HideNote();
@@ -1337,7 +1350,7 @@ void SwPostItMgr::Hide()
void SwPostItMgr::Show()
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
(*i)->bShow = true;
}
@@ -1365,7 +1378,7 @@ void SwPostItMgr::Sort(const short aType)
}
}
-SwMarginWin* SwPostItMgr::GetPostIt(SfxBroadcaster* pBroadcaster) const
+SwSidebarWin* SwPostItMgr::GetSidebarWin( const SfxBroadcaster* pBroadcaster) const
{
for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
@@ -1375,32 +1388,12 @@ SwMarginWin* SwPostItMgr::GetPostIt(SfxBroadcaster* pBroadcaster) const
return NULL;
}
-SwPostIt* SwPostItMgr::GetPostIt(SwPostItField* pFld) const
-{
- for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
- {
- if ( (*i)->GetFmtFld() && ((*i)->GetFmtFld()->GetFld() == pFld) )
- return static_cast<SwPostIt*>((*i)->pPostIt);
- }
- return NULL;
-}
-
-SwMarginWin* SwPostItMgr::GetPostIt( const SfxBroadcaster* pBroadcaster) const
-{
- for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
- {
- if ( (*i)->GetBroadCaster() == pBroadcaster)
- return (*i)->pPostIt;
- }
- return NULL;
-}
-
-SwPostIt* SwPostItMgr::GetPostIt(const SwPostItField* pFld) const
+sw::annotation::SwAnnotationWin* SwPostItMgr::GetAnnotationWin(const SwPostItField* pFld) const
{
for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->GetFmtFld() && ((*i)->GetFmtFld()->GetFld() == pFld))
- return static_cast<SwPostIt*>((*i)->pPostIt);
+ return dynamic_cast<sw::annotation::SwAnnotationWin*>((*i)->pPostIt);
}
return NULL;
}
@@ -1429,15 +1422,16 @@ bool SwPostItMgr::ShowPreview(const SwField* pFld, SwFmtFld*& pFmtFld) const
return false;
}
-SwMarginWin* SwPostItMgr::GetNextPostIt(USHORT aDirection, SwMarginWin* aPostIt)
+SwSidebarWin* SwPostItMgr::GetNextPostIt( USHORT aDirection,
+ SwSidebarWin* aPostIt )
{
if (mvPostItFlds.size()>1)
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->pPostIt ==aPostIt)
{
- SwMarginItem_iterator iNextPostIt = i;
+ SwSidebarItem_iterator iNextPostIt = i;
if (aDirection==KEY_PAGEUP)
{
if ( iNextPostIt==mvPostItFlds.begin() )
@@ -1470,11 +1464,11 @@ long SwPostItMgr::GetNextBorder()
{
for (unsigned long n=0;n<mPages.size();n++)
{
- for(SwMarginItem_iterator b = mPages[n]->mList->begin(); b!= mPages[n]->mList->end(); b++)
+ for(SwSidebarItem_iterator b = mPages[n]->mList->begin(); b!= mPages[n]->mList->end(); b++)
{
if ((*b)->pPostIt == mpActivePostIt)
{
- SwMarginItem_iterator aNext = b;
+ SwSidebarItem_iterator aNext = b;
aNext++;
bool bFollow = (aNext == mPages[n]->mList->end()) ? false : (*aNext)->pPostIt->IsFollow();
if ( mPages[n]->bScrollbar || bFollow )
@@ -1507,15 +1501,16 @@ void SwPostItMgr::SetShadowState(const SwPostItField* pFld,bool bCursor)
{
// reset old one if still alive
// TODO: does not work properly if mouse and cursor was set
- SwPostIt* pOldPostIt = GetPostIt(mShadowState.mpShadowFld);
+ sw::annotation::SwAnnotationWin* pOldPostIt =
+ GetAnnotationWin(mShadowState.mpShadowFld);
if (pOldPostIt && pOldPostIt->Shadow() && (pOldPostIt->Shadow()->GetShadowState() != SS_EDIT))
- pOldPostIt->SetViewState(SS_NORMAL);
+ pOldPostIt->SetViewState(VS_NORMAL);
}
//set new one, if it is not currently edited
- SwPostIt* pNewPostIt = GetPostIt(pFld);
+ sw::annotation::SwAnnotationWin* pNewPostIt = GetAnnotationWin(pFld);
if (pNewPostIt && pNewPostIt->Shadow() && (pNewPostIt->Shadow()->GetShadowState() != SS_EDIT))
{
- pNewPostIt->SetViewState(SS_VIEW);
+ pNewPostIt->SetViewState(VS_VIEW);
//remember our new field
mShadowState.mpShadowFld = pFld;
mShadowState.bCursor = false;
@@ -1538,10 +1533,10 @@ void SwPostItMgr::SetShadowState(const SwPostItField* pFld,bool bCursor)
if (!mShadowState.bCursor && !mShadowState.bMouse)
{
// reset old one if still alive
- SwPostIt* pOldPostIt = GetPostIt(mShadowState.mpShadowFld);
+ sw::annotation::SwAnnotationWin* pOldPostIt = GetAnnotationWin(mShadowState.mpShadowFld);
if (pOldPostIt && pOldPostIt->Shadow() && (pOldPostIt->Shadow()->GetShadowState() != SS_EDIT))
{
- pOldPostIt->SetViewState(SS_NORMAL);
+ pOldPostIt->SetViewState(VS_NORMAL);
mShadowState.mpShadowFld = 0;
}
}
@@ -1583,8 +1578,9 @@ bool SwPostItMgr::IsHit(const Point &aPointPixel)
{
Rectangle aRect;
DBG_ASSERT(mPages.size()>nPageNum-1,"SwPostitMgr:: page container size wrong");
- aRect = mPages[nPageNum-1]->bMarginSide ? Rectangle(Point(aPageFrm.Left()-GetSidebarWidth()-GetSidebarBorderWidth(),aPageFrm.Top()),Size(GetSidebarWidth(),aPageFrm.Height())) :
- Rectangle( Point(aPageFrm.Right()+GetSidebarBorderWidth(),aPageFrm.Top()) , Size(GetSidebarWidth(),aPageFrm.Height()));
+ aRect = mPages[nPageNum-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Rectangle(Point(aPageFrm.Left()-GetSidebarWidth()-GetSidebarBorderWidth(),aPageFrm.Top()),Size(GetSidebarWidth(),aPageFrm.Height()))
+ : Rectangle( Point(aPageFrm.Right()+GetSidebarBorderWidth(),aPageFrm.Top()) , Size(GetSidebarWidth(),aPageFrm.Height()));
if (aRect.IsInside(aPoint))
{
// we hit the note's sidebar
@@ -1601,8 +1597,9 @@ bool SwPostItMgr::IsHit(const Point &aPointPixel)
Rectangle SwPostItMgr::GetBottomScrollRect(const unsigned long aPage) const
{
SwRect aPageRect = mPages[aPage-1]->mPageRect;
- Point aPointBottom = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth() - GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height()) :
- Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
+ Point aPointBottom = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth() - GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height())
+ : Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
Size aSize(GetSidebarWidth() - mpEditWin->PixelToLogic(Size(4,0)).Width(), mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height()) ;
return Rectangle(aPointBottom,aSize);
@@ -1611,8 +1608,9 @@ Rectangle SwPostItMgr::GetBottomScrollRect(const unsigned long aPage) const
Rectangle SwPostItMgr::GetTopScrollRect(const unsigned long aPage) const
{
SwRect aPageRect = mPages[aPage-1]->mPageRect;
- Point aPointTop = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth() -GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height()) :
- Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
+ Point aPointTop = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth() -GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height())
+ : Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
Size aSize(GetSidebarWidth() - mpEditWin->PixelToLogic(Size(4,0)).Width(), mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height()) ;
return Rectangle(aPointTop,aSize);
}
@@ -1622,11 +1620,13 @@ Rectangle SwPostItMgr::GetTopScrollRect(const unsigned long aPage) const
bool SwPostItMgr::ScrollbarHit(const unsigned long aPage,const Point &aPoint)
{
SwRect aPageRect = mPages[aPage-1]->mPageRect;
- Point aPointBottom = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height()) :
- Point(aPageRect.Right() + GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
+ Point aPointBottom = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height())
+ : Point(aPageRect.Right() + GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
- Point aPointTop = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height()) :
- Point(aPageRect.Right()+GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
+ Point aPointTop = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height())
+ : Point(aPageRect.Right()+GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
Rectangle aRectBottom(GetBottomScrollRect(aPage));
Rectangle aRectTop(GetTopScrollRect(aPage));
@@ -1657,8 +1657,8 @@ void SwPostItMgr::CorrectPositions()
return;
// find first valid note
- SwMarginWin *pFirstPostIt = 0;
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ SwSidebarWin *pFirstPostIt = 0;
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
pFirstPostIt = (*i)->pPostIt;
if (pFirstPostIt)
@@ -1670,23 +1670,23 @@ void SwPostItMgr::CorrectPositions()
return;
// yeah, I know, if this is a left page it could be wrong, but finding the page and the note is probably not even faster than just doing it
- const long aAnkorX = mpEditWin->LogicToPixel( Point((long)(pFirstPostIt->Ankor()->GetSixthPosition().getX()),0)).X();
- const long aAnkorY = mpEditWin->LogicToPixel( Point(0,(long)(pFirstPostIt->Ankor()->GetSixthPosition().getY()))).Y() + 1;
- if (Point(aAnkorX,aAnkorY) != pFirstPostIt->GetPosPixel())
+ const long aAnchorX = mpEditWin->LogicToPixel( Point((long)(pFirstPostIt->Anchor()->GetSixthPosition().getX()),0)).X();
+ const long aAnchorY = mpEditWin->LogicToPixel( Point(0,(long)(pFirstPostIt->Anchor()->GetSixthPosition().getY()))).Y() + 1;
+ if (Point(aAnchorX,aAnchorY) != pFirstPostIt->GetPosPixel())
{
- long aAnkorPosX = 0;
- long aAnkorPosY = 0;
+ long aAnchorPosX = 0;
+ long aAnchorPosY = 0;
for (unsigned long n=0;n<mPages.size();n++)
{
- for(SwMarginItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
{
if ((*i)->bShow && (*i)->pPostIt)
{
- aAnkorPosX = mPages[n]->bMarginSide ?
- mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Ankor()->GetSeventhPosition().getX()),0)).X() :
- mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Ankor()->GetSixthPosition().getX()),0)).X();
- aAnkorPosY = mpEditWin->LogicToPixel( Point(0,(long)((*i)->pPostIt->Ankor()->GetSixthPosition().getY()))).Y() + 1;
- (*i)->pPostIt->SetPosPixel(Point(aAnkorPosX,aAnkorPosY));
+ aAnchorPosX = mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Anchor()->GetSeventhPosition().getX()),0)).X()
+ : mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Anchor()->GetSixthPosition().getX()),0)).X();
+ aAnchorPosY = mpEditWin->LogicToPixel( Point(0,(long)((*i)->pPostIt->Anchor()->GetSixthPosition().getY()))).Y() + 1;
+ (*i)->pPostIt->SetPosPixel(Point(aAnchorPosX,aAnchorPosY));
}
}
}
@@ -1757,29 +1757,29 @@ Color SwPostItMgr::GetColorLight(sal_uInt16 aAuthorIndex)
return Color(COL_WHITE);
}
-Color SwPostItMgr::GetColorAnkor(sal_uInt16 aAuthorIndex)
+Color SwPostItMgr::GetColorAnchor(sal_uInt16 aAuthorIndex)
{
if (!Application::GetSettings().GetStyleSettings().GetHighContrastMode())
{
- static const Color aArrayAnkor[] = {
+ static const Color aArrayAnchor[] = {
COL_AUTHOR1_DARK, COL_AUTHOR2_DARK, COL_AUTHOR3_DARK,
COL_AUTHOR4_DARK, COL_AUTHOR5_DARK, COL_AUTHOR6_DARK,
COL_AUTHOR7_DARK, COL_AUTHOR8_DARK, COL_AUTHOR9_DARK };
- return Color( aArrayAnkor[ aAuthorIndex % (sizeof( aArrayAnkor ) / sizeof( aArrayAnkor[0] ))]);
+ return Color( aArrayAnchor[ aAuthorIndex % (sizeof( aArrayAnchor ) / sizeof( aArrayAnchor[0] ))]);
}
else
return Color(COL_WHITE);
}
-void SwPostItMgr::SetActivePostIt( SwMarginWin* p)
+void SwPostItMgr::SetActiveSidebarWin( SwSidebarWin* p)
{
if ( p != mpActivePostIt )
{
// we need the temp variable so we can set mpActivePostIt before we call DeactivatePostIt
// therefore we get a new layout in DOCCHANGED when switching from postit to document,
// otherwise, GetActivePostIt() would still hold our old postit
- SwMarginWin* pActive = mpActivePostIt;
+ SwSidebarWin* pActive = mpActivePostIt;
mpActivePostIt = p;
if (pActive)
{
@@ -1816,7 +1816,7 @@ IMPL_LINK( SwPostItMgr, CalcHdl, void*, /* pVoid*/ )
void SwPostItMgr::Rescale()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->Rescale();
}
@@ -1824,7 +1824,7 @@ void SwPostItMgr::Rescale()
sal_Int32 SwPostItMgr::GetInitialAnchorDistance() const
{
const Fraction& f( mpEditWin->GetMapMode().GetScaleY() );
- return POSTIT_INITIAL_ANKOR_DISTANCE * f.GetNumerator() / f.GetDenominator();
+ return POSTIT_INITIAL_ANCHOR_DISTANCE * f.GetNumerator() / f.GetDenominator();
}
sal_Int32 SwPostItMgr::GetSpaceBetween() const
@@ -1853,21 +1853,21 @@ sal_Int32 SwPostItMgr::GetSidebarScrollerHeight() const
void SwPostItMgr::SetSpellChecking()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->SetSpellChecking();
}
void SwPostItMgr::SetReadOnlyState()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->SetReadonly( mbReadOnly );
}
void SwPostItMgr::CheckMetaText()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->CheckMetaText();
@@ -1875,45 +1875,45 @@ void SwPostItMgr::CheckMetaText()
sal_uInt16 SwPostItMgr::Replace(SvxSearchItem* pItem)
{
- SwMarginWin* pWin = GetActivePostIt();
- sal_uInt16 aResult = pWin->View()->StartSearchAndReplace( *pItem );
+ SwSidebarWin* pWin = GetActiveSidebarWin();
+ sal_uInt16 aResult = pWin->GetOutlinerView()->StartSearchAndReplace( *pItem );
if (!aResult)
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
return aResult;
}
sal_uInt16 SwPostItMgr::FinishSearchReplace(const ::com::sun::star::util::SearchOptions& rSearchOptions, bool bSrchForward)
{
- SwMarginWin* pWin = GetActivePostIt();
+ SwSidebarWin* pWin = GetActiveSidebarWin();
SvxSearchItem aItem(SID_SEARCH_ITEM );
aItem.SetSearchOptions(rSearchOptions);
aItem.SetBackward(!bSrchForward);
- sal_uInt16 aResult = pWin->View()->StartSearchAndReplace( aItem );
+ sal_uInt16 aResult = pWin->GetOutlinerView()->StartSearchAndReplace( aItem );
if (!aResult)
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
return aResult;
}
sal_uInt16 SwPostItMgr::SearchReplace(const SwFmtFld &pFld, const ::com::sun::star::util::SearchOptions& rSearchOptions, bool bSrchForward)
{
sal_uInt16 aResult = 0;
- SwMarginWin* pWin = GetPostIt(&pFld);
+ SwSidebarWin* pWin = GetSidebarWin(&pFld);
if (pWin)
{
- ESelection aOldSelection = pWin->View()->GetSelection();
+ ESelection aOldSelection = pWin->GetOutlinerView()->GetSelection();
if (bSrchForward)
- pWin->View()->SetSelection(ESelection(0,0,0,0));
+ pWin->GetOutlinerView()->SetSelection(ESelection(0,0,0,0));
else
- pWin->View()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
+ pWin->GetOutlinerView()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
SvxSearchItem aItem(SID_SEARCH_ITEM );
aItem.SetSearchOptions(rSearchOptions);
aItem.SetBackward(!bSrchForward);
- aResult = pWin->View()->StartSearchAndReplace( aItem );
+ aResult = pWin->GetOutlinerView()->StartSearchAndReplace( aItem );
if (!aResult)
- pWin->View()->SetSelection(aOldSelection);
+ pWin->GetOutlinerView()->SetSelection(aOldSelection);
else
{
- SetActivePostIt(pWin);
+ SetActiveSidebarWin(pWin);
MakeVisible(pWin);
}
}
@@ -1945,6 +1945,121 @@ void SwPostItMgr::AssureStdModeAtShell()
}
}
+bool SwPostItMgr::HasActiveSidebarWin() const
+{
+ return mpActivePostIt != 0;
+}
+
+bool SwPostItMgr::HasActiveAnnotationWin() const
+{
+ return HasActiveSidebarWin() &&
+ dynamic_cast<sw::annotation::SwAnnotationWin*>(mpActivePostIt) != 0;
+}
+
+void SwPostItMgr::GrabFocusOnActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->GrabFocus();
+ }
+}
+
+void SwPostItMgr::UpdateDataOnActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->UpdateData();
+ }
+}
+
+void SwPostItMgr::DeleteActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->Delete();
+ }
+}
+
+void SwPostItMgr::HideActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->Hide();
+ }
+}
+
+void SwPostItMgr::ToggleInsModeOnActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->ToggleInsMode();
+ }
+}
+
+void SwPostItMgr::ConnectSidebarWinToFrm( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ SwSidebarWin& rSidebarWin )
+{
+ if ( mpFrmSidebarWinContainer == 0 )
+ {
+ mpFrmSidebarWinContainer = new SwFrmSidebarWinContainer();
+ }
+
+ const bool bInserted = mpFrmSidebarWinContainer->insert( rFrm, rFmtFld, rSidebarWin );
+ if ( bInserted &&
+ mpWrtShell->GetAccessibleMap() )
+ {
+ mpWrtShell->GetAccessibleMap()->InvalidatePosOrSize( 0, 0, &rSidebarWin, SwRect() );
+ }
+}
+
+void SwPostItMgr::DisconnectSidebarWinFromFrm( const SwFrm& rFrm,
+ SwSidebarWin& rSidebarWin )
+{
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ const bool bRemoved = mpFrmSidebarWinContainer->remove( rFrm, rSidebarWin );
+ if ( bRemoved &&
+ mpWrtShell->GetAccessibleMap() )
+ {
+ mpWrtShell->GetAccessibleMap()->Dispose( 0, 0, &rSidebarWin );
+ }
+ }
+}
+
+bool SwPostItMgr::HasFrmConnectedSidebarWins( const SwFrm& rFrm )
+{
+ bool bRet( false );
+
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ bRet = !mpFrmSidebarWinContainer->empty( rFrm );
+ }
+
+ return bRet;
+}
+
+Window* SwPostItMgr::GetSidebarWinForFrmByIndex( const SwFrm& rFrm,
+ const sal_Int32 nIndex )
+{
+ Window* pSidebarWin( 0 );
+
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ pSidebarWin = mpFrmSidebarWinContainer->get( rFrm, nIndex );
+ }
+
+ return pSidebarWin;
+}
+
+void SwPostItMgr::GetAllSidebarWinForFrm( const SwFrm& rFrm,
+ std::vector< Window* >* pChildren )
+{
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ mpFrmSidebarWinContainer->getAll( rFrm, pChildren );
+ }
+}
+
void SwNoteProps::Commit() {}
void SwNoteProps::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {}
-
diff --git a/sw/source/ui/docvw/ShadowOverlayObject.cxx b/sw/source/ui/docvw/ShadowOverlayObject.cxx
new file mode 100644
index 000000000000..b11fc914b5fd
--- /dev/null
+++ b/sw/source/ui/docvw/ShadowOverlayObject.cxx
@@ -0,0 +1,268 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: postit.cxx,v $
+ * $Revision: 1.8.42.11 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <ShadowOverlayObject.hxx>
+
+#include <view.hxx>
+#include <svx/sdrpaintwindow.hxx>
+#include <svx/svdview.hxx>
+#include <svx/sdr/overlay/overlaymanager.hxx>
+
+#include <sw_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
+
+namespace sw { namespace sidebarwindows {
+
+//////////////////////////////////////////////////////////////////////////////
+// helper SwPostItShadowPrimitive
+//
+// Used to allow view-dependent primitive definition. For that purpose, the
+// initially created primitive (this one) always has to be view-independent,
+// but the decomposition is made view-dependent. Very simple primitive which
+// just remembers the discrete data and applies it at decomposition time.
+
+class ShadowPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
+{
+private:
+ basegfx::B2DPoint maBasePosition;
+ basegfx::B2DPoint maSecondPosition;
+ ShadowState maShadowState;
+
+protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
+
+public:
+ ShadowPrimitive(
+ const basegfx::B2DPoint& rBasePosition,
+ const basegfx::B2DPoint& rSecondPosition,
+ ShadowState aShadowState)
+ : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
+ maBasePosition(rBasePosition),
+ maSecondPosition(rSecondPosition),
+ maShadowState(aShadowState)
+ {}
+
+ // data access
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ ShadowState getShadowState() const { return maShadowState; }
+
+ virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+};
+
+drawinglayer::primitive2d::Primitive2DSequence ShadowPrimitive::create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
+{
+ // get logic sizes in object coordinate system
+ drawinglayer::primitive2d::Primitive2DSequence xRetval;
+ basegfx::B2DRange aRange(getBasePosition());
+
+ switch(maShadowState)
+ {
+ case SS_NORMAL:
+ {
+ aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (2.0 * getDiscreteUnit())));
+ const ::drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
+ drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
+ 0.0,
+ 0.5,
+ 0.5,
+ 1800.0 * F_PI1800,
+ basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
+ basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
+ 2);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::FillGradientPrimitive2D(
+ aRange,
+ aFillGradientAttribute));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ break;
+ }
+ case SS_VIEW:
+ {
+ aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
+ const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
+ drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
+ 0.0,
+ 0.5,
+ 0.5,
+ 1800.0 * F_PI1800,
+ basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
+ basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
+ 4);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::FillGradientPrimitive2D(
+ aRange,
+ aFillGradientAttribute));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ break;
+ }
+ case SS_EDIT:
+ {
+ aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
+ const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
+ drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
+ 0.0,
+ 0.5,
+ 0.5,
+ 1800.0 * F_PI1800,
+ basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
+ basegfx::BColor(83.0/255.0,83.0/255.0,83.0/255.0),
+ 4);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::FillGradientPrimitive2D(
+ aRange,
+ aFillGradientAttribute));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ return xRetval;
+}
+
+bool ShadowPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
+{
+ if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
+ {
+ const ShadowPrimitive& rCompare = static_cast< const ShadowPrimitive& >(rPrimitive);
+
+ return (getBasePosition() == rCompare.getBasePosition()
+ && getSecondPosition() == rCompare.getSecondPosition()
+ && getShadowState() == rCompare.getShadowState());
+ }
+
+ return false;
+}
+
+ImplPrimitrive2DIDBlock(ShadowPrimitive, PRIMITIVE2D_ID_SWSIDEBARSHADOWPRIMITIVE)
+
+/****** ShadowOverlayObject **************************************************/
+/* static */ ShadowOverlayObject* ShadowOverlayObject::CreateShadowOverlayObject( SwView& rDocView )
+{
+ ShadowOverlayObject* pShadowOverlayObject( 0 );
+
+ if ( rDocView.GetDrawView() )
+ {
+ SdrPaintWindow* pPaintWindow = rDocView.GetDrawView()->GetPaintWindow(0);
+ if( pPaintWindow )
+ {
+ sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
+
+ if ( pOverlayManager )
+ {
+ pShadowOverlayObject = new ShadowOverlayObject( basegfx::B2DPoint(0,0),
+ basegfx::B2DPoint(0,0),
+ Color(0,0,0),
+ SS_NORMAL );
+ pOverlayManager->add(*pShadowOverlayObject);
+ }
+ }
+ }
+
+ return pShadowOverlayObject;
+}
+
+/* static */ void ShadowOverlayObject::DestroyShadowOverlayObject( ShadowOverlayObject* pShadow )
+{
+ if ( pShadow )
+ {
+ if ( pShadow->getOverlayManager() )
+ {
+ pShadow->getOverlayManager()->remove(*pShadow);
+ }
+ delete pShadow;
+ }
+}
+
+ShadowOverlayObject::ShadowOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPosition,
+ Color aBaseColor,
+ ShadowState aState )
+ : OverlayObjectWithBasePosition(rBasePos, aBaseColor)
+ , maSecondPosition(rSecondPosition)
+ , mShadowState(aState)
+{
+}
+
+ShadowOverlayObject::~ShadowOverlayObject()
+{
+}
+
+drawinglayer::primitive2d::Primitive2DSequence ShadowOverlayObject::createOverlayObjectPrimitive2DSequence()
+{
+ const drawinglayer::primitive2d::Primitive2DReference aReference(
+ new ShadowPrimitive( getBasePosition(),
+ GetSecondPosition(),
+ GetShadowState() ) );
+ return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
+}
+
+void ShadowOverlayObject::SetShadowState(ShadowState aState)
+{
+ if (mShadowState != aState)
+ {
+ mShadowState = aState;
+
+ objectChange();
+ }
+}
+
+void ShadowOverlayObject::SetPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2)
+{
+ if(!rPoint1.equal(getBasePosition()) || !rPoint2.equal(GetSecondPosition()))
+ {
+ maBasePosition = rPoint1;
+ maSecondPosition = rPoint2;
+
+ objectChange();
+ }
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/ShadowOverlayObject.hxx b/sw/source/ui/docvw/ShadowOverlayObject.hxx
new file mode 100644
index 000000000000..a00aea380fdb
--- /dev/null
+++ b/sw/source/ui/docvw/ShadowOverlayObject.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SHADOWOVERLAYOBJECT_HXX
+#define _SHADOWOVERLAYOBJECT_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+class SwView;
+
+namespace sw { namespace sidebarwindows {
+
+enum ShadowState
+{
+ SS_NORMAL,
+ SS_VIEW,
+ SS_EDIT
+};
+
+class ShadowOverlayObject: public sdr::overlay::OverlayObjectWithBasePosition
+{
+ protected:
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ private:
+ basegfx::B2DPoint maSecondPosition;
+ ShadowState mShadowState;
+
+ ShadowOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPosition,
+ Color aBaseColor,
+ ShadowState aState );
+ virtual ~ShadowOverlayObject();
+
+ public:
+ void SetShadowState(ShadowState aState);
+ inline ShadowState GetShadowState() {return mShadowState;}
+
+ inline const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
+ void SetSecondPosition( const basegfx::B2DPoint& rNew );
+
+ void SetPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2 );
+
+ static ShadowOverlayObject* CreateShadowOverlayObject( SwView& rDocView );
+ static void DestroyShadowOverlayObject( ShadowOverlayObject* pShadow );
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/SidebarTxtControl.cxx b/sw/source/ui/docvw/SidebarTxtControl.cxx
new file mode 100644
index 000000000000..61d4884157cf
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControl.cxx
@@ -0,0 +1,422 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarTxtControl.hxx>
+
+#include <SidebarTxtControlAcc.hxx>
+
+#include <SidebarWin.hxx>
+#include <PostItMgr.hxx>
+
+#include <cmdid.h>
+#include <docvw.hrc>
+
+#include <unotools/securityoptions.hxx>
+
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/mnumgr.hxx>
+
+#include <vcl/svapp.hxx>
+#include <vcl/help.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/scrbar.hxx>
+
+#include <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/flditem.hxx>
+
+#include <uitool.hxx>
+#include <view.hxx>
+#include <wrtsh.hxx>
+#include <shellres.hxx>
+#include <SwRewriter.hxx>
+#include <undobj.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+SidebarTxtControl::SidebarTxtControl( SwSidebarWin& rSidebarWin,
+ WinBits nBits,
+ SwView& rDocView,
+ SwPostItMgr& rPostItMgr )
+ : Control( &rSidebarWin, nBits )
+ , mrSidebarWin( rSidebarWin )
+ , mrDocView( rDocView )
+ , mrPostItMgr( rPostItMgr )
+ , mbMouseOver( false )
+{
+ AddEventListener( LINK( &mrSidebarWin, SwSidebarWin, WindowEventListener ) );
+}
+
+SidebarTxtControl::~SidebarTxtControl()
+{
+ RemoveEventListener( LINK( &mrSidebarWin, SwSidebarWin, WindowEventListener ) );
+}
+
+OutlinerView* SidebarTxtControl::GetTextView() const
+{
+ return mrSidebarWin.GetOutlinerView();
+}
+
+void SidebarTxtControl::GetFocus()
+{
+ Window::GetFocus();
+ if ( !mrSidebarWin.IsMouseOver() )
+ {
+ Invalidate();
+ }
+}
+
+void SidebarTxtControl::LoseFocus()
+{
+ // write the visible text back into the SwField
+ mrSidebarWin.UpdateData();
+
+ Window::LoseFocus();
+ if ( !mrSidebarWin.IsMouseOver() )
+ {
+ Invalidate();
+ }
+}
+
+void SidebarTxtControl::RequestHelp(const HelpEvent &rEvt)
+{
+ USHORT nResId = 0;
+ switch( mrSidebarWin.GetLayoutStatus() )
+ {
+ case SwPostItHelper::INSERTED: nResId = STR_REDLINE_INSERT; break;
+ case SwPostItHelper::DELETED: nResId = STR_REDLINE_DELETE; break;
+ default: nResId = 0;
+ }
+
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_REDLINE );
+ if ( nResId &&
+ mrDocView.GetWrtShell().GetContentAtPos( mrSidebarWin.GetAnchorPos(), aCntntAtPos ) )
+ {
+ String sTxt;
+ sTxt = SW_RESSTR( nResId );
+ sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM(": " ));
+ sTxt += aCntntAtPos.aFnd.pRedl->GetAuthorString();
+ sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " - " ));
+ sTxt += GetAppLangDateTimeString( aCntntAtPos.aFnd.pRedl->GetTimeStamp() );
+ Help::ShowQuickHelp( this,PixelToLogic(Rectangle(rEvt.GetMousePosPixel(),Size(50,10))),sTxt);
+ }
+}
+
+void SidebarTxtControl::Paint( const Rectangle& rRect)
+{
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ {
+ if ( mrSidebarWin.IsMouseOverSidebarWin() ||
+ HasFocus() )
+ {
+ DrawGradient( Rectangle( Point(0,0), PixelToLogic(GetSizePixel()) ),
+ Gradient( GRADIENT_LINEAR,
+ mrSidebarWin.ColorDark(),
+ mrSidebarWin.ColorDark() ) );
+ }
+ else
+ {
+ DrawGradient( Rectangle( Point(0,0), PixelToLogic(GetSizePixel()) ),
+ Gradient( GRADIENT_LINEAR,
+ mrSidebarWin.ColorLight(),
+ mrSidebarWin.ColorDark()));
+ }
+ }
+
+ if ( GetTextView() )
+ {
+ GetTextView()->Paint( rRect );
+ }
+
+ if ( mrSidebarWin.GetLayoutStatus()==SwPostItHelper::DELETED )
+ {
+ SetLineColor(mrSidebarWin.GetChangeColor());
+ DrawLine( PixelToLogic( GetPosPixel() ),
+ PixelToLogic( GetPosPixel() +
+ Point( GetSizePixel().Width(),
+ GetSizePixel().Height() ) ) );
+ DrawLine( PixelToLogic( GetPosPixel() +
+ Point( GetSizePixel().Width(),0) ),
+ PixelToLogic( GetPosPixel() +
+ Point( 0, GetSizePixel().Height() ) ) );
+ }
+}
+
+void SidebarTxtControl::KeyInput( const KeyEvent& rKeyEvt )
+{
+ const KeyCode& rKeyCode = rKeyEvt.GetKeyCode();
+ USHORT nKey = rKeyCode.GetCode();
+ if ( ( rKeyCode.IsMod1() && rKeyCode.IsMod2() ) &&
+ ( (nKey == KEY_PAGEUP) || (nKey == KEY_PAGEDOWN) ) )
+ {
+ mrSidebarWin.SwitchToPostIt(nKey);
+ }
+ else if ( nKey == KEY_ESCAPE ||
+ ( rKeyCode.IsMod1() &&
+ ( nKey == KEY_PAGEUP ||
+ nKey == KEY_PAGEDOWN ) ) )
+ {
+ mrSidebarWin.SwitchToFieldPos();
+ }
+ else if ( nKey == KEY_INSERT )
+ {
+ if ( !rKeyCode.IsMod1() && !rKeyCode.IsMod2() )
+ {
+ mrSidebarWin.ToggleInsMode();
+ }
+ }
+ else
+ {
+ //let's make sure we see our note
+ mrPostItMgr.MakeVisible(&mrSidebarWin);
+
+ long aOldHeight = mrSidebarWin.GetPostItTextHeight();
+ bool bDone = false;
+
+ /// HACK: need to switch off processing of Undo/Redo in Outliner
+ if ( !( (nKey == KEY_Z || nKey == KEY_Y) && rKeyCode.IsMod1()) )
+ {
+ bool bIsProtected = mrSidebarWin.IsProtected();
+ if ( !bIsProtected ||
+ ( bIsProtected &&
+ !mrSidebarWin.GetOutlinerView()->GetOutliner()->GetEditEngine().DoesKeyChangeText(rKeyEvt)) )
+ {
+ bDone = GetTextView() && GetTextView()->PostKeyEvent( rKeyEvt );
+ }
+ else
+ {
+ InfoBox( this, SW_RES( MSG_READONLY_CONTENT )).Execute();
+ }
+ }
+ if (bDone)
+ mrSidebarWin.ResizeIfNeccessary( aOldHeight, mrSidebarWin.GetPostItTextHeight() );
+ else
+ {
+ // write back data first when showing navigator
+ if ( nKey==KEY_F5 )
+ mrSidebarWin.UpdateData();
+ if (!mrDocView.KeyInput(rKeyEvt))
+ Window::KeyInput(rKeyEvt);
+ }
+ }
+
+ mrDocView.GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+}
+
+void SidebarTxtControl::MouseMove( const MouseEvent& rMEvt )
+{
+ if ( GetTextView() )
+ {
+ OutlinerView* pOutlinerView( GetTextView() );
+ pOutlinerView->MouseMove( rMEvt );
+ // mba: why does OutlinerView not handle the modifier setting?!
+ // this forces the postit to handle *all* pointer types
+ SetPointer( pOutlinerView->GetPointer( rMEvt.GetPosPixel() ) );
+
+ const EditView& aEV = pOutlinerView->GetEditView();
+ const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
+ if ( pItem )
+ {
+ const SvxFieldData* pFld = pItem->GetField();
+ const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
+ if ( pURL )
+ {
+ String sURL( pURL->GetURL() );
+ SvtSecurityOptions aSecOpts;
+ if ( aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK) )
+ {
+ sURL.InsertAscii( ": ", 0 );
+ sURL.Insert( ViewShell::GetShellRes()->aHyperlinkClick, 0 );
+ }
+ Help::ShowQuickHelp( this,PixelToLogic(Rectangle(GetPosPixel(),Size(50,10))),sURL);
+ }
+ }
+ }
+}
+
+void SidebarTxtControl::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if ( GetTextView() )
+ {
+ SvtSecurityOptions aSecOpts;
+ bool bExecuteMod = aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK);
+
+ if ( !bExecuteMod || (bExecuteMod && rMEvt.GetModifier() == KEY_MOD1))
+ {
+ const EditView& aEV = GetTextView()->GetEditView();
+ const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
+ if ( pItem )
+ {
+ const SvxFieldData* pFld = pItem->GetField();
+ const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
+ if ( pURL )
+ {
+ GetTextView()->MouseButtonDown( rMEvt );
+ SwWrtShell &rSh = mrDocView.GetWrtShell();
+ String sURL( pURL->GetURL() );
+ String sTarget( pURL->GetTargetFrame() );
+ ::LoadURL( sURL, &rSh, URLLOAD_NOFILTER, &sTarget);
+ return;
+ }
+ }
+ }
+ }
+
+ GrabFocus();
+ if ( GetTextView() )
+ {
+ GetTextView()->MouseButtonDown( rMEvt );
+ }
+ mrDocView.GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+}
+
+void SidebarTxtControl::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if ( GetTextView() )
+ GetTextView()->MouseButtonUp( rMEvt );
+}
+
+IMPL_LINK( SidebarTxtControl, OnlineSpellCallback, SpellCallbackInfo*, pInfo )
+{
+ if ( pInfo->nCommand == SPELLCMD_STARTSPELLDLG )
+ {
+ mrDocView.GetViewFrame()->GetDispatcher()->Execute( FN_SPELL_GRAMMAR_DIALOG, SFX_CALLMODE_ASYNCHRON);
+ }
+ return 0;
+}
+
+IMPL_LINK( SidebarTxtControl, Select, Menu*, pSelMenu )
+{
+ mrSidebarWin.ExecuteCommand( pSelMenu->GetCurItemId() );
+ return 0;
+}
+
+void SidebarTxtControl::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
+ {
+ if ( !mrSidebarWin.IsProtected() &&
+ GetTextView() &&
+ GetTextView()->IsWrongSpelledWordAtPos( rCEvt.GetMousePosPixel(),TRUE ))
+ {
+ Link aLink = LINK(this, SidebarTxtControl, OnlineSpellCallback);
+ GetTextView()->ExecuteSpellPopup(rCEvt.GetMousePosPixel(),&aLink);
+ }
+ else
+ {
+ SfxPopupMenuManager* aMgr = mrDocView.GetViewFrame()->GetDispatcher()->Popup(0, this,&rCEvt.GetMousePosPixel());
+ ((PopupMenu*)aMgr->GetSVMenu())->SetSelectHdl( LINK(this, SidebarTxtControl, Select) );
+
+ {
+ XubString aText = ((PopupMenu*)aMgr->GetSVMenu())->GetItemText( FN_DELETE_NOTE_AUTHOR );
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UNDO_ARG1, mrSidebarWin.GetAuthor());
+ aText = aRewriter.Apply(aText);
+ ((PopupMenu*)aMgr->GetSVMenu())->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
+ }
+
+ if (rCEvt.IsMouseEvent())
+ ((PopupMenu*)aMgr->GetSVMenu())->Execute(this,rCEvt.GetMousePosPixel());
+ else
+ {
+ const Size aSize = GetSizePixel();
+ const Point aPos = Point( aSize.getWidth()/2, aSize.getHeight()/2 );
+ ((PopupMenu*)aMgr->GetSVMenu())->Execute(this,aPos);
+ }
+ delete aMgr;
+ }
+ }
+ else
+ if (rCEvt.GetCommand() == COMMAND_WHEEL)
+ {
+ if (mrSidebarWin.IsScrollbarVisible())
+ {
+ const CommandWheelData* pData = rCEvt.GetWheelData();
+ if (pData->IsShift() || pData->IsMod1() || pData->IsMod2())
+ {
+ mrDocView.HandleWheelCommands(rCEvt);
+ }
+ else
+ {
+ HandleScrollCommand( rCEvt, 0 , mrSidebarWin.Scrollbar());
+ }
+ }
+ else
+ {
+ mrDocView.HandleWheelCommands(rCEvt);
+ }
+ }
+ else
+ {
+ if ( GetTextView() )
+ GetTextView()->Command( rCEvt );
+ else
+ Window::Command(rCEvt);
+ }
+}
+
+XubString SidebarTxtControl::GetSurroundingText() const
+{
+ if( GetTextView() )
+ return GetTextView()->GetSurroundingText();
+ else
+ return XubString::EmptyString();
+}
+
+Selection SidebarTxtControl::GetSurroundingTextSelection() const
+{
+ if( GetTextView() )
+ return GetTextView()->GetSurroundingTextSelection();
+ else
+ return Selection( 0, 0 );
+}
+
+css::uno::Reference< css::accessibility::XAccessible > SidebarTxtControl::CreateAccessible()
+{
+
+ SidebarTxtControlAccessible* pAcc( new SidebarTxtControlAccessible( *this ) );
+ css::uno::Reference< css::awt::XWindowPeer > xWinPeer( pAcc );
+ SetWindowPeer( xWinPeer, pAcc );
+
+ css::uno::Reference< css::accessibility::XAccessible > xAcc( xWinPeer, css::uno::UNO_QUERY );
+ return xAcc;
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/SidebarTxtControl.hxx b/sw/source/ui/docvw/SidebarTxtControl.hxx
new file mode 100644
index 000000000000..08a5de0003c4
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControl.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARTXTCONTROL_HXX
+#define _SIDEBARTXTCONTROL_HXX
+
+#include <vcl/ctrl.hxx>
+
+class OutlinerView;
+class SwView;
+class SwPostItMgr;
+class SpellCallbackInfo;
+
+namespace sw { namespace sidebarwindows {
+
+class SwSidebarWin;
+
+class SidebarTxtControl : public Control
+{
+ private:
+ SwSidebarWin& mrSidebarWin;
+ SwView& mrDocView;
+ SwPostItMgr& mrPostItMgr;
+
+ bool mbMouseOver;
+
+ protected:
+ virtual void Paint( const Rectangle& rRect);
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void LoseFocus();
+ virtual void RequestHelp(const HelpEvent &rEvt);
+ virtual XubString GetSurroundingText() const;
+ virtual Selection GetSurroundingTextSelection() const;
+
+ DECL_LINK( Select, Menu* );
+
+ public:
+ SidebarTxtControl( SwSidebarWin& rSidebarWin,
+ WinBits nBits,
+ SwView& rDocView,
+ SwPostItMgr& rPostItMgr );
+ ~SidebarTxtControl();
+
+ virtual void GetFocus();
+
+ OutlinerView* GetTextView() const;
+
+ DECL_LINK( OnlineSpellCallback, SpellCallbackInfo*);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/SidebarTxtControlAcc.cxx b/sw/source/ui/docvw/SidebarTxtControlAcc.cxx
new file mode 100644
index 000000000000..8b0f0293367c
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControlAcc.cxx
@@ -0,0 +1,317 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarTxtControlAcc.hxx>
+
+#include <SidebarTxtControl.hxx>
+
+#include <svl/brdcst.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <editeng/unoedsrc.hxx>
+#include <editeng/unoforou.hxx>
+#include <editeng/unoviwou.hxx>
+#include <editeng/unoedhlp.hxx>
+#include <svx/AccessibleTextHelper.hxx>
+#include <editeng/outliner.hxx>
+
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+// =============================================================================
+// declaration and implementation of <SvxEditSource>
+// for <::accessibiliy::AccessibleTextHelper> instance
+// =============================================================================
+class SidebarTextEditSource : public SvxEditSource,
+ public SfxBroadcaster
+{
+ public:
+ SidebarTextEditSource( SidebarTxtControl& rSidebarTxtControl );
+ virtual ~SidebarTextEditSource();
+
+ virtual SvxEditSource* Clone() const;
+
+ virtual SvxTextForwarder* GetTextForwarder();
+ virtual SvxViewForwarder* GetViewForwarder();
+ virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate = sal_False );
+
+ virtual void UpdateData();
+
+ virtual SfxBroadcaster& GetBroadcaster() const;
+ DECL_LINK( NotifyHdl, EENotify* );
+
+ private:
+ SidebarTxtControl& mrSidebarTxtControl;
+ SvxOutlinerForwarder mTextForwarder;
+ SvxDrawOutlinerViewForwarder mViewForwarder;
+};
+
+SidebarTextEditSource::SidebarTextEditSource( SidebarTxtControl& rSidebarTxtControl )
+ : SvxEditSource()
+ , mrSidebarTxtControl( rSidebarTxtControl )
+ , mTextForwarder( *(rSidebarTxtControl.GetTextView()->GetOutliner()), NULL )
+ , mViewForwarder( *(rSidebarTxtControl.GetTextView()) )
+{
+ if ( mrSidebarTxtControl.GetTextView() )
+ {
+ mrSidebarTxtControl.GetTextView()->GetOutliner()->SetNotifyHdl( LINK(this, SidebarTextEditSource, NotifyHdl) );
+ }
+}
+
+SidebarTextEditSource::~SidebarTextEditSource()
+{
+ if ( mrSidebarTxtControl.GetTextView() )
+ {
+ mrSidebarTxtControl.GetTextView()->GetOutliner()->SetNotifyHdl( Link() );
+ }
+}
+
+SvxEditSource* SidebarTextEditSource::Clone() const
+{
+ return new SidebarTextEditSource( mrSidebarTxtControl );
+}
+
+SvxTextForwarder* SidebarTextEditSource::GetTextForwarder()
+{
+ return &mTextForwarder;
+}
+
+SvxViewForwarder* SidebarTextEditSource::GetViewForwarder()
+{
+ return &mViewForwarder;
+}
+
+SvxEditViewForwarder* SidebarTextEditSource::GetEditViewForwarder( sal_Bool /*bCreate*/ )
+{
+ return &mViewForwarder;
+}
+
+void SidebarTextEditSource::UpdateData()
+{
+ // nothing to do
+}
+
+SfxBroadcaster& SidebarTextEditSource::GetBroadcaster() const
+{
+ return *( const_cast< SidebarTextEditSource* > (this) );
+}
+
+IMPL_LINK(SidebarTextEditSource, NotifyHdl, EENotify*, pNotify)
+{
+ if ( pNotify )
+ {
+ ::std::auto_ptr< SfxHint > aHint( SvxEditSourceHelper::EENotification2Hint( pNotify ) );
+
+ if( aHint.get() )
+ {
+ Broadcast( *aHint.get() );
+ }
+ }
+
+ return 0;
+}
+
+
+// =============================================================================
+// declaration and implementation of accessible context for <SidebarTxtControl> instance
+// =============================================================================
+class SidebarTxtControlAccessibleContext : public VCLXAccessibleComponent
+{
+ public:
+ explicit SidebarTxtControlAccessibleContext( SidebarTxtControl& rSidebarTxtControl );
+ virtual ~SidebarTxtControlAccessibleContext();
+
+ virtual sal_Int32 SAL_CALL
+ getAccessibleChildCount()
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 i )
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ using WeakAggComponentImplHelperBase::addEventListener;
+ using WeakAggComponentImplHelperBase::removeEventListener;
+
+ virtual void SAL_CALL
+ addEventListener (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener >& xListener)
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL
+ removeEventListener (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener >& xListener)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ protected:
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+ private:
+ SidebarTxtControl& mrSidebarTxtControl;
+ ::accessibility::AccessibleTextHelper* mpAccessibleTextHelper;
+
+ ::vos::OMutex maMutex;
+
+ void defunc();
+};
+
+SidebarTxtControlAccessibleContext::SidebarTxtControlAccessibleContext( SidebarTxtControl& rSidebarTxtControl )
+ : VCLXAccessibleComponent( rSidebarTxtControl.GetWindowPeer() )
+ , mrSidebarTxtControl( rSidebarTxtControl )
+ , mpAccessibleTextHelper( 0 )
+ , maMutex()
+{
+ ::std::auto_ptr<SvxEditSource> pEditSource(
+ new SidebarTextEditSource( mrSidebarTxtControl ) );
+ mpAccessibleTextHelper = new ::accessibility::AccessibleTextHelper( pEditSource );
+ mpAccessibleTextHelper->SetEventSource( mrSidebarTxtControl.GetWindowPeer() );
+}
+
+SidebarTxtControlAccessibleContext::~SidebarTxtControlAccessibleContext()
+{
+ defunc();
+}
+
+void SidebarTxtControlAccessibleContext::defunc()
+{
+ delete mpAccessibleTextHelper;
+ mpAccessibleTextHelper = 0;
+}
+
+sal_Int32 SAL_CALL SidebarTxtControlAccessibleContext::getAccessibleChildCount()
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ vos::OGuard aGuard( maMutex );
+
+ sal_Int32 nChildCount( 0 );
+
+ if ( mpAccessibleTextHelper )
+ {
+ nChildCount = mpAccessibleTextHelper->GetChildCount();
+ }
+
+ return nChildCount;
+}
+
+css::uno::Reference< css::accessibility::XAccessible > SAL_CALL SidebarTxtControlAccessibleContext::getAccessibleChild( sal_Int32 i )
+ throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException )
+{
+ vos::OGuard aGuard( maMutex );
+
+ css::uno::Reference< css::accessibility::XAccessible > xChild;
+
+ if ( mpAccessibleTextHelper )
+ {
+ xChild = mpAccessibleTextHelper->GetChild( i );
+ }
+
+ return xChild;
+}
+
+void SAL_CALL SidebarTxtControlAccessibleContext::addEventListener (
+ const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener)
+ throw (css::uno::RuntimeException)
+{
+ vos::OGuard aGuard( maMutex );
+
+ if ( mpAccessibleTextHelper )
+ {
+ mpAccessibleTextHelper->AddEventListener(xListener);
+ }
+}
+
+void SAL_CALL SidebarTxtControlAccessibleContext::removeEventListener (
+ const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener)
+ throw (css::uno::RuntimeException)
+{
+ vos::OGuard aGuard( maMutex );
+
+ if ( mpAccessibleTextHelper )
+ {
+ mpAccessibleTextHelper->RemoveEventListener(xListener);
+ }
+}
+
+void SidebarTxtControlAccessibleContext::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ if ( mpAccessibleTextHelper )
+ {
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_OBJECT_DYING:
+ {
+ defunc();
+ }
+ break;
+ case VCLEVENT_WINDOW_GETFOCUS:
+ case VCLEVENT_CONTROL_GETFOCUS:
+ {
+ mpAccessibleTextHelper->SetFocus( sal_True );
+ }
+ break;
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ case VCLEVENT_CONTROL_LOSEFOCUS:
+ {
+ mpAccessibleTextHelper->SetFocus( sal_False );
+ }
+ break;
+ }
+ }
+
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+}
+
+// =============================================================================
+// implementaion of accessible for <SidebarTxtControl> instance
+// =============================================================================
+SidebarTxtControlAccessible::SidebarTxtControlAccessible( SidebarTxtControl& rSidebarTxtControl )
+ : VCLXWindow()
+ , mrSidebarTxtControl( rSidebarTxtControl )
+{
+ SetWindow( &mrSidebarTxtControl );
+}
+
+SidebarTxtControlAccessible::~SidebarTxtControlAccessible()
+{
+}
+
+css::uno::Reference< css::accessibility::XAccessibleContext > SidebarTxtControlAccessible::CreateAccessibleContext()
+{
+ SidebarTxtControlAccessibleContext* pAccContext(
+ new SidebarTxtControlAccessibleContext( mrSidebarTxtControl ) );
+ css::uno::Reference< css::accessibility::XAccessibleContext > xAcc( pAccContext );
+ return xAcc;
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/SidebarTxtControlAcc.hxx b/sw/source/ui/docvw/SidebarTxtControlAcc.hxx
new file mode 100644
index 000000000000..57edc50512d5
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControlAcc.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARTXTCONTROLACC_HXX
+#define _SIDEBARTXTCONTROLACC_HXX
+
+#include <toolkit/awt/vclxwindow.hxx>
+
+namespace sw { namespace sidebarwindows {
+
+class SidebarTxtControl;
+
+class SidebarTxtControlAccessible : public VCLXWindow
+{
+ public:
+ explicit SidebarTxtControlAccessible( SidebarTxtControl& rSidebarTxtControl );
+ virtual ~SidebarTxtControlAccessible();
+
+ virtual com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessibleContext >
+ CreateAccessibleContext();
+
+ private:
+ SidebarTxtControl& mrSidebarTxtControl;
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/SidebarWin.cxx b/sw/source/ui/docvw/SidebarWin.cxx
new file mode 100644
index 000000000000..cce6db3a891b
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarWin.cxx
@@ -0,0 +1,1373 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarWin.hxx>
+#include <SidebarWinAcc.hxx>
+#include <PostItMgr.hxx>
+
+#include <SidebarTxtControl.hxx>
+#include <AnchorOverlayObject.hxx>
+#include <ShadowOverlayObject.hxx>
+
+#include <annotation.hrc>
+#include <popup.hrc>
+#include <docvw.hrc>
+#include <app.hrc>
+#include <access.hrc>
+
+#include <viewopt.hxx>
+#include <cmdid.h>
+
+#include <editeng/fontitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/langitem.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/eeitem.hxx>
+
+#include <svl/zforlist.hxx>
+#include <svl/undo.hxx>
+#include <svl/stritem.hxx>
+
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+
+#include <vcl/scrbar.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/menubtn.hxx>
+
+#include <edtwin.hxx>
+#include <view.hxx>
+#include <docsh.hxx>
+#include <wrtsh.hxx>
+#include <doc.hxx>
+#include <swmodule.hxx>
+#include <langhelper.hxx>
+
+#include <sw_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+#define METABUTTON_WIDTH 16
+#define METABUTTON_HEIGHT 18
+#define METABUTTON_AREA_WIDTH 30
+#define POSTIT_META_HEIGHT (sal_Int32) 30
+#define POSTIT_MINIMUMSIZE_WITHOUT_META 50
+
+#define POSTIT_SHADOW_BRIGHT Color(180,180,180)
+#define POSTIT_SHADOW_DARK Color(83,83,83)
+
+#define EMPTYSTRING rtl::OUString::createFromAscii("")
+
+/************** SwSidebarWin************************************/
+SwSidebarWin::SwSidebarWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem )
+ : Window(&rEditWin, nBits)
+ , mrMgr(aMgr)
+ , mrView( rEditWin.GetView() )
+ , nFlags(aBits)
+ , mnEventId(0)
+ , mpOutlinerView(0)
+ , mpOutliner(0)
+ , mpSidebarTxtControl(0)
+ , mpVScrollbar(0)
+ , mpMetadataAuthor(0)
+ , mpMetadataDate(0)
+ , mpMenuButton(0)
+ , mpAnchor(0)
+ , mpShadow(0)
+ , mColorAnchor()
+ , mColorDark()
+ , mColorLight()
+ , mChangeColor()
+ , meSidebarPosition( sw::sidebarwindows::SIDEBAR_NONE )
+ , mPosSize()
+ , mAnchorRect()
+ , mPageBorder( 0 )
+ , mbMouseOver( false )
+ , mLayoutStatus( SwPostItHelper::INVISIBLE )
+ , mbReadonly( false )
+ , mbIsFollow( false )
+ , mrSidebarItem( rSidebarItem )
+ , mpAnchorFrm( rSidebarItem.maLayoutInfo.mpAnchorFrm )
+{
+ mpShadow = ShadowOverlayObject::CreateShadowOverlayObject( mrView );
+ if ( mpShadow )
+ {
+ mpShadow->setVisible(false);
+ }
+
+ mrMgr.ConnectSidebarWinToFrm( *(mrSidebarItem.maLayoutInfo.mpAnchorFrm),
+ *(mrSidebarItem.GetFmtFld()),
+ *this );
+}
+
+SwSidebarWin::~SwSidebarWin()
+{
+ mrMgr.DisconnectSidebarWinFromFrm( *(mrSidebarItem.maLayoutInfo.mpAnchorFrm),
+ *this );
+
+ Disable();
+
+ if ( mpSidebarTxtControl )
+ {
+ if ( mpOutlinerView )
+ {
+ mpOutlinerView->SetWindow( 0 );
+ }
+ delete mpSidebarTxtControl;
+ mpSidebarTxtControl = 0;
+ }
+
+ if ( mpOutlinerView )
+ {
+ delete mpOutlinerView;
+ mpOutlinerView = 0;
+ }
+
+ if (mpOutliner)
+ {
+ delete mpOutliner;
+ mpOutliner = 0;
+ }
+
+ if (mpMetadataAuthor)
+ {
+ mpMetadataAuthor->RemoveEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ delete mpMetadataAuthor;
+ mpMetadataAuthor = 0;
+ }
+
+ if (mpMetadataDate)
+ {
+ mpMetadataDate->RemoveEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ delete mpMetadataDate;
+ mpMetadataDate = 0;
+ }
+
+ if (mpVScrollbar)
+ {
+ mpVScrollbar->RemoveEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ delete mpVScrollbar;
+ mpVScrollbar = 0;
+ }
+
+ AnchorOverlayObject::DestroyAnchorOverlayObject( mpAnchor );
+ mpAnchor = 0;
+
+ ShadowOverlayObject::DestroyShadowOverlayObject( mpShadow );
+ mpShadow = 0;
+
+ delete mpMenuButton;
+ mpMenuButton = 0;
+
+ if (mnEventId)
+ Application::RemoveUserEvent( mnEventId );
+}
+
+void SwSidebarWin::Paint( const Rectangle& rRect)
+{
+ Window::Paint(rRect);
+
+ if (mpMetadataAuthor->IsVisible() )
+ {
+ //draw left over space
+ if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ {
+ SetFillColor(COL_BLACK);
+ }
+ else
+ {
+ SetFillColor(mColorDark);
+ }
+ SetLineColor();
+ DrawRect( PixelToLogic(
+ Rectangle( Point( mpMetadataAuthor->GetPosPixel().X() +
+ mpMetadataAuthor->GetSizePixel().Width(),
+ mpMetadataAuthor->GetPosPixel().Y() ),
+ Size( GetMetaButtonAreaWidth(),
+ mpMetadataAuthor->GetSizePixel().Height() +
+ mpMetadataDate->GetSizePixel().Height() ) ) ) );
+ }
+}
+
+void SwSidebarWin::SetPosSizePixelRect( long nX,
+ long nY,
+ long nWidth,
+ long nHeight,
+ const SwRect &aRect,
+ const long aPageBorder)
+{
+ mPosSize = Rectangle(Point(nX,nY),Size(nWidth,nHeight));
+ mAnchorRect = aRect;
+ mPageBorder = aPageBorder;
+}
+
+void SwSidebarWin::SetSize( const Size& rNewSize )
+{
+ mPosSize.SetSize(rNewSize);
+}
+
+void SwSidebarWin::SetVirtualPosSize( const Point& aPoint, const Size& aSize)
+{
+ mPosSize = Rectangle(aPoint,aSize);
+}
+
+void SwSidebarWin::TranslateTopPosition(const long aAmount)
+{
+ mPosSize.Move(0,aAmount);
+}
+
+void SwSidebarWin::ShowAnchorOnly(const Point &aPoint)
+{
+ HideNote();
+ SetPosAndSize();
+ if (mpAnchor)
+ {
+ mpAnchor->SetSixthPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
+ mpAnchor->SetSeventhPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
+ mpAnchor->SetAnchorState(AS_ALL);
+ mpAnchor->setVisible(true);
+ }
+ if (mpShadow)
+ mpShadow->setVisible(false);
+}
+
+SfxItemSet SwSidebarWin::DefaultItem()
+{
+ SfxItemSet aItem( mrView.GetDocShell()->GetPool() );
+ aItem.Put(SvxFontHeightItem(200,100,EE_CHAR_FONTHEIGHT));
+ aItem.Put(SvxFontItem(FAMILY_SWISS,GetSettings().GetStyleSettings().GetFieldFont().GetName(),
+ EMPTYSTRING,PITCH_DONTKNOW,RTL_TEXTENCODING_DONTKNOW,EE_CHAR_FONTINFO));
+ return aItem;
+}
+
+void SwSidebarWin::InitControls()
+{
+ AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+
+ // actual window which holds the user text
+ mpSidebarTxtControl = new SidebarTxtControl( *this,
+ WB_NODIALOGCONTROL,
+ mrView, mrMgr );
+ mpSidebarTxtControl->SetPointer(Pointer(POINTER_TEXT));
+
+ // window controls for author and date
+ mpMetadataAuthor = new Edit( this, 0 );
+ mpMetadataAuthor->SetAccessibleName( SW_RES( STR_ACCESS_ANNOTATION_AUTHOR_NAME ) );
+ mpMetadataAuthor->SetReadOnly();
+ mpMetadataAuthor->AlwaysDisableInput(true);
+ mpMetadataAuthor->SetCallHandlersOnInputDisabled(true);
+ mpMetadataAuthor->AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ // we should leave this setting alone, but for this we need a better layout algo
+ // with variable meta size height
+ {
+ AllSettings aSettings = mpMetadataAuthor->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ Font aFont = aStyleSettings.GetFieldFont();
+ aFont.SetHeight(8);
+ aStyleSettings.SetFieldFont(aFont);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataAuthor->SetSettings(aSettings);
+ }
+
+ mpMetadataDate = new Edit( this, 0 );
+ mpMetadataDate->SetAccessibleName( SW_RES( STR_ACCESS_ANNOTATION_DATE_NAME ) );
+ mpMetadataDate->SetReadOnly();
+ mpMetadataDate->AlwaysDisableInput(true);
+ mpMetadataDate->SetCallHandlersOnInputDisabled(true);
+ mpMetadataDate->AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ // we should leave this setting alone, but for this we need a better layout algo
+ // with variable meta size height
+ {
+ AllSettings aSettings = mpMetadataDate->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ Font aFont = aStyleSettings.GetFieldFont();
+ aFont.SetHeight(8);
+ aStyleSettings.SetFieldFont(aFont);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataDate->SetSettings(aSettings);
+ }
+
+
+ SwDocShell* aShell = mrView.GetDocShell();
+ mpOutliner = new Outliner(&aShell->GetPool(),OUTLINERMODE_TEXTOBJECT);
+ aShell->GetDoc()->SetCalcFieldValueHdl( mpOutliner );
+ mpOutliner->SetUpdateMode( TRUE );
+ Rescale();
+
+ OutputDevice* pDev = aShell->GetDoc()->getReferenceDevice(TRUE);
+ if ( pDev )
+ {
+ mpOutliner->SetRefDevice( pDev );
+ }
+
+ mpOutlinerView = new OutlinerView ( mpOutliner, mpSidebarTxtControl );
+ mpOutlinerView->SetBackgroundColor(COL_TRANSPARENT);
+ mpOutliner->InsertView(mpOutlinerView );
+ mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,1,1) ) );
+
+ mpOutlinerView->SetAttribs(DefaultItem());
+
+ // TODO: ??
+ EEHorizontalTextDirection aDefHoriTextDir = Application::GetSettings().GetLayoutRTL() ? EE_HTEXTDIR_R2L : EE_HTEXTDIR_L2R;
+ mpOutliner->SetDefaultHorizontalTextDirection( aDefHoriTextDir );
+
+ //create Scrollbars
+ mpVScrollbar = new ScrollBar(this, WB_3DLOOK |WB_VSCROLL|WB_DRAG);
+ mpVScrollbar->EnableNativeWidget(false);
+ mpVScrollbar->EnableRTL( false );
+ mpVScrollbar->SetScrollHdl(LINK(this, SwSidebarWin, ScrollHdl));
+ mpVScrollbar->EnableDrag();
+ mpVScrollbar->AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+
+ const SwViewOption* pVOpt = mrView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = mpOutliner->GetControlWord();
+ // TODO: crash when AUTOCOMPLETE enabled
+ nCntrl |= EE_CNTRL_MARKFIELDS | EE_CNTRL_PASTESPECIAL | EE_CNTRL_AUTOCORRECT | EV_CNTRL_AUTOSCROLL | EE_CNTRL_URLSFXEXECUTE; // | EE_CNTRL_AUTOCOMPLETE;
+ if (pVOpt->IsFieldShadings())
+ nCntrl |= EE_CNTRL_MARKFIELDS;
+ else
+ nCntrl &= ~EE_CNTRL_MARKFIELDS;
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ mpOutliner->SetControlWord(nCntrl);
+
+ sal_uInt16 aIndex = SW_MOD()->InsertRedlineAuthor(GetAuthor());
+ SetColor( mrMgr.GetColorDark(aIndex),
+ mrMgr.GetColorLight(aIndex),
+ mrMgr.GetColorAnchor(aIndex));
+
+ CheckMetaText();
+
+ mpMenuButton = CreateMenuButton();
+
+ SetLanguage(GetLanguage());
+ GetOutlinerView()->StartSpeller();
+ SetPostItText();
+ Engine()->CompleteOnlineSpelling();
+
+ mpSidebarTxtControl->Show();
+ mpMetadataAuthor->Show();
+ mpMetadataDate->Show();
+ mpVScrollbar->Show();
+}
+
+void SwSidebarWin::CheckMetaText()
+{
+ const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
+ String sMeta = GetAuthor();
+ if (sMeta.Len() == 0)
+ {
+ sMeta = String(SW_RES(STR_NOAUTHOR));
+ }
+ else if (sMeta.Len() > 22)
+ {
+ sMeta.Erase(20);
+ sMeta = sMeta + rtl::OUString::createFromAscii("...");
+ }
+ if ( mpMetadataAuthor->GetText() != sMeta )
+ {
+ mpMetadataAuthor->SetText(sMeta);
+ }
+
+ Date aDate = GetDate();
+ if (aDate==Date())
+ {
+ sMeta = String(SW_RES(STR_POSTIT_TODAY));
+ }
+ else if (aDate == Date(Date()-1))
+ {
+ sMeta = String(SW_RES(STR_POSTIT_YESTERDAY));
+ }
+ else if (aDate.IsValid() )
+ {
+ sMeta = rLocalData.getDate(aDate);
+ }
+ else
+ {
+ sMeta = String(SW_RES(STR_NODATE));
+ }
+ if (GetTime()!=0)
+ {
+ sMeta = sMeta + rtl::OUString::createFromAscii(" ") + rLocalData.getTime( GetTime(),false );
+ }
+ if ( mpMetadataDate->GetText() != sMeta )
+ {
+ mpMetadataDate->SetText(sMeta);
+ }
+
+}
+
+void SwSidebarWin::Rescale()
+{
+ MapMode aMode = GetParent()->GetMapMode();
+ aMode.SetOrigin( Point() );
+ mpOutliner->SetRefMapMode( aMode );
+ SetMapMode( aMode );
+ mpSidebarTxtControl->SetMapMode( aMode );
+ if ( mpMetadataAuthor )
+ {
+ Font aFont( mpMetadataAuthor->GetSettings().GetStyleSettings().GetFieldFont() );
+ sal_Int32 nHeight = aFont.GetHeight();
+ nHeight = nHeight * aMode.GetScaleY().GetNumerator() / aMode.GetScaleY().GetDenominator();
+ aFont.SetHeight( nHeight );
+ mpMetadataAuthor->SetControlFont( aFont );
+ }
+ if ( mpMetadataDate )
+ {
+ Font aFont( mpMetadataDate->GetSettings().GetStyleSettings().GetFieldFont() );
+ sal_Int32 nHeight = aFont.GetHeight();
+ nHeight = nHeight * aMode.GetScaleY().GetNumerator() / aMode.GetScaleY().GetDenominator();
+ aFont.SetHeight( nHeight );
+ mpMetadataDate->SetControlFont( aFont );
+ }
+}
+
+void SwSidebarWin::SetPosAndSize()
+{
+ bool bChange = false;
+
+ if (GetSizePixel() != mPosSize.GetSize())
+ {
+ bChange = true;
+ SetSizePixel(mPosSize.GetSize());
+ DoResize();
+ }
+
+ if (GetPosPixel().X() != mPosSize.TopLeft().X() || (abs(GetPosPixel().Y() - mPosSize.TopLeft().Y()) > 5) )
+ {
+ bChange = true;
+ SetPosPixel(mPosSize.TopLeft());
+
+ Point aLineStart;
+ Point aLineEnd ;
+ switch ( meSidebarPosition )
+ {
+ case sw::sidebarwindows::SIDEBAR_LEFT:
+ {
+ aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
+ aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_RIGHT:
+ {
+ aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
+ aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
+ }
+ break;
+ default:
+ ASSERT( false,
+ "<SwSidebarWin::SetPosAndSize()> - unexpected position of sidebar" );
+ break;
+ }
+
+ if (!IsPreview())
+ {
+ if (mpAnchor)
+ {
+ mpAnchor->SetAllPosition( basegfx::B2DPoint( mAnchorRect.Left() , mAnchorRect.Bottom() - 5* 15),
+ basegfx::B2DPoint( mAnchorRect.Left()-5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left()+5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left(), mAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( mPageBorder ,mAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
+ basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()));
+ mpAnchor->SetHeight(mAnchorRect.Height());
+ }
+ else
+ {
+ mpAnchor = AnchorOverlayObject::CreateAnchorOverlayObject( mrView,
+ mAnchorRect,
+ mPageBorder,
+ aLineStart,
+ aLineEnd,
+ mColorAnchor );
+ if ( mpAnchor )
+ {
+ mpAnchor->SetHeight(mAnchorRect.Height());
+ mpAnchor->setVisible(true);
+ mpAnchor->SetAnchorState(AS_TRI);
+ if (HasChildPathFocus())
+ {
+ mpAnchor->setLineSolid(true);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ if ( mpAnchor &&
+ ( mpAnchor->getBasePosition() != basegfx::B2DPoint( mAnchorRect.Left() , mAnchorRect.Bottom()-5*15) ) )
+ {
+ mpAnchor->SetTriPosition( basegfx::B2DPoint( mAnchorRect.Left() , mAnchorRect.Bottom() - 5* 15),
+ basegfx::B2DPoint( mAnchorRect.Left()-5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left()+5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left(), mAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( mPageBorder , mAnchorRect.Bottom()+2*15));
+ }
+ }
+
+ if (bChange)
+ {
+ Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
+ Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
+ mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
+ }
+
+ if (mrMgr.ShowNotes())
+ {
+ if (IsFollow() && !HasChildPathFocus())
+ {
+ mpAnchor->SetAnchorState(AS_END);
+ }
+ else
+ {
+ mpAnchor->SetAnchorState(AS_ALL);
+ SwSidebarWin* pWin = GetTopReplyNote();
+ if (pWin)
+ pWin->Anchor()->SetAnchorState(AS_END);
+ }
+ }
+}
+
+void SwSidebarWin::DoResize()
+{
+ long aTextHeight = LogicToPixel( mpOutliner->CalcTextSize()).Height();
+ long aHeight = GetSizePixel().Height();
+ unsigned long aWidth = GetSizePixel().Width();
+
+ aHeight -= GetMetaHeight();
+ mpMetadataAuthor->Show();
+ mpMetadataDate->Show();
+ mpSidebarTxtControl->SetQuickHelpText(EMPTYSTRING);
+
+ if ((aTextHeight > aHeight) && !IsPreview())
+ { // we need vertical scrollbars and have to reduce the width
+ aWidth -= GetScrollbarWidth();
+ mpVScrollbar->Show();
+ }
+ else
+ {
+ mpVScrollbar->Hide();
+ }
+
+ {
+ const Size aSizeOfMetadataControls( GetSizePixel().Width() - GetMetaButtonAreaWidth(),
+ GetMetaHeight()/2 );
+ mpMetadataAuthor->SetPosSizePixel( 0,
+ aHeight,
+ aSizeOfMetadataControls.Width(),
+ aSizeOfMetadataControls.Height() );
+ mpMetadataDate->SetPosSizePixel( 0,
+ aHeight + aSizeOfMetadataControls.Height(),
+ aSizeOfMetadataControls.Width(),
+ aSizeOfMetadataControls.Height() );
+ }
+
+ mpOutliner->SetPaperSize( PixelToLogic( Size(aWidth,aHeight) ) ) ;
+ mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
+ if (!mpVScrollbar->IsVisible())
+ { // if we do not have a scrollbar anymore, we want to see the complete text
+ mpOutlinerView->SetVisArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
+ }
+
+ if (!Application::GetSettings().GetLayoutRTL())
+ {
+ mpSidebarTxtControl->SetPosSizePixel(0, 0, aWidth, aHeight);
+ mpVScrollbar->SetPosSizePixel( aWidth, 0, GetScrollbarWidth(), aHeight);
+ }
+ else
+ {
+ mpSidebarTxtControl->SetPosSizePixel( ( (aTextHeight > aHeight) && !IsPreview()
+ ? GetScrollbarWidth() : 0 ) , 0,
+ aWidth, aHeight);
+ mpVScrollbar->SetPosSizePixel( 0, 0, GetScrollbarWidth(), aHeight);
+ }
+
+ mpVScrollbar->SetVisibleSize( PixelToLogic(Size(0,aHeight)).Height() );
+ mpVScrollbar->SetPageSize( PixelToLogic(Size(0,aHeight)).Height() * 8 / 10 );
+ mpVScrollbar->SetLineSize( mpOutliner->GetTextHeight() / 10 );
+ SetScrollbar();
+ mpVScrollbar->SetRange( Range(0, mpOutliner->GetTextHeight()));
+
+ //calculate rects for meta- button
+ const Fraction& fx( GetMapMode().GetScaleX() );
+ const Fraction& fy( GetMapMode().GetScaleY() );
+
+ const Point aPos( mpMetadataAuthor->GetPosPixel());
+ Rectangle aRectMetaButton;
+ if (IsPreview())
+ {
+ aRectMetaButton = PixelToLogic(
+ Rectangle( Point( aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH*4+10)*fx.GetNumerator()/fx.GetDenominator(),
+ aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
+ Size( METABUTTON_WIDTH*4*fx.GetNumerator()/fx.GetDenominator(),
+ METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
+ }
+ else
+ {
+ aRectMetaButton = PixelToLogic(
+ Rectangle( Point( aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH+10)*fx.GetNumerator()/fx.GetDenominator(),
+ aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
+ Size( METABUTTON_WIDTH*fx.GetNumerator()/fx.GetDenominator(),
+ METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
+ }
+
+ {
+ const Rectangle aRectMetaButtonPixel( LogicToPixel( aRectMetaButton ) );
+ mpMenuButton->SetPosSizePixel( aRectMetaButtonPixel.Left(),
+ aRectMetaButtonPixel.Top(),
+ aRectMetaButtonPixel.GetWidth(),
+ aRectMetaButtonPixel.GetHeight() );
+ }
+}
+
+void SwSidebarWin::SetSizePixel( const Size& rNewSize )
+{
+ Window::SetSizePixel(rNewSize);
+
+ if (mpShadow)
+ {
+ Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
+ Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
+ mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
+ }
+}
+
+void SwSidebarWin::SetScrollbar()
+{
+ mpVScrollbar->SetThumbPos( mpOutlinerView->GetVisArea().Top()+ mpOutlinerView->GetEditView().GetCursor()->GetOffsetY());
+}
+
+void SwSidebarWin::ResizeIfNeccessary(long aOldHeight, long aNewHeight)
+{
+ if (aOldHeight != aNewHeight)
+ {
+ //check for lower border or next note
+ long aBorder = mrMgr.GetNextBorder();
+ if (aBorder != -1)
+ {
+ if (aNewHeight > GetMinimumSizeWithoutMeta())
+ {
+ long aNewLowerValue = GetPosPixel().Y() + aNewHeight + GetMetaHeight();
+ if (aNewLowerValue < aBorder)
+ SetSizePixel(Size(GetSizePixel().Width(),aNewHeight+GetMetaHeight()));
+ else
+ SetSizePixel(Size(GetSizePixel().Width(),aBorder - GetPosPixel().Y()));
+ DoResize();
+ Invalidate();
+ }
+ else
+ {
+ if (GetSizePixel().Height() != GetMinimumSizeWithoutMeta() + GetMetaHeight())
+ SetSizePixel(Size(GetSizePixel().Width(),GetMinimumSizeWithoutMeta() + GetMetaHeight()));
+ DoResize();
+ Invalidate();
+ }
+ }
+ else
+ {
+ DoResize();
+ Invalidate();
+ }
+ }
+ else
+ {
+ SetScrollbar();
+ }
+}
+
+void SwSidebarWin::SetColor(Color aColorDark,Color aColorLight, Color aColorAnchor)
+{
+ mColorDark = aColorDark;
+ mColorLight = aColorLight;
+ mColorAnchor = aColorAnchor;
+
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ {
+ {
+ mpMetadataAuthor->SetControlBackground(mColorDark);
+ AllSettings aSettings = mpMetadataAuthor->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ aStyleSettings.SetFieldTextColor(aColorAnchor);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataAuthor->SetSettings(aSettings);
+ }
+
+ {
+ mpMetadataDate->SetControlBackground(mColorDark);
+ AllSettings aSettings = mpMetadataDate->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ aStyleSettings.SetFieldTextColor(aColorAnchor);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataDate->SetSettings(aSettings);
+ }
+
+ AllSettings aSettings2 = mpVScrollbar->GetSettings();
+ StyleSettings aStyleSettings2 = aSettings2.GetStyleSettings();
+ aStyleSettings2.SetButtonTextColor(Color(0,0,0));
+ aStyleSettings2.SetCheckedColor(mColorLight); //hintergund
+ aStyleSettings2.SetShadowColor(mColorAnchor);
+ aStyleSettings2.SetFaceColor(mColorDark);
+ aSettings2.SetStyleSettings(aStyleSettings2);
+ mpVScrollbar->SetSettings(aSettings2);
+ }
+}
+
+void SwSidebarWin::SetSidebarPosition(sw::sidebarwindows::SidebarPosition eSidebarPosition)
+{
+ meSidebarPosition = eSidebarPosition;
+}
+
+void SwSidebarWin::SetReadonly(BOOL bSet)
+{
+ mbReadonly = bSet;
+ GetOutlinerView()->SetReadOnly(bSet);
+}
+
+void SwSidebarWin::SetLanguage(const SvxLanguageItem aNewItem)
+{
+ Link pLink = Engine()->GetModifyHdl();
+ Engine()->SetModifyHdl( Link() );
+ ESelection aOld = GetOutlinerView()->GetSelection();
+
+ ESelection aNewSelection( 0, 0, (USHORT)Engine()->GetParagraphCount()-1, USHRT_MAX );
+ GetOutlinerView()->SetSelection( aNewSelection );
+ SfxItemSet aEditAttr(GetOutlinerView()->GetAttribs());
+ aEditAttr.Put(aNewItem);
+ GetOutlinerView()->SetAttribs( aEditAttr );
+
+ GetOutlinerView()->SetSelection(aOld);
+ Engine()->SetModifyHdl( pLink );
+
+ const SwViewOption* pVOpt = mrView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = Engine()->GetControlWord();
+ // turn off
+ if (!pVOpt->IsOnlineSpell())
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ Engine()->SetControlWord(nCntrl);
+
+ //turn back on
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ Engine()->SetControlWord(nCntrl);
+
+ Engine()->CompleteOnlineSpelling();
+ Invalidate();
+}
+
+void SwSidebarWin::DataChanged( const DataChangedEvent& aEvent)
+{
+ Window::DataChanged( aEvent );
+}
+
+void SwSidebarWin::GetFocus()
+{
+ if (mpSidebarTxtControl)
+ mpSidebarTxtControl->GrabFocus();
+}
+
+void SwSidebarWin::LoseFocus()
+{
+}
+
+void SwSidebarWin::ShowNote()
+{
+ SetPosAndSize();
+ if (!IsVisible())
+ Window::Show();
+ if (mpShadow && !mpShadow->isVisible())
+ mpShadow->setVisible(true);
+ if (mpAnchor && !mpAnchor->isVisible())
+ mpAnchor->setVisible(true);
+}
+
+void SwSidebarWin::HideNote()
+{
+ if (IsVisible())
+ Window::Hide();
+ if (mpAnchor)
+ {
+ if (mrMgr.IsShowAnchor())
+ mpAnchor->SetAnchorState(AS_TRI);
+ else
+ mpAnchor->setVisible(false);
+ }
+ if (mpShadow && mpShadow->isVisible())
+ mpShadow->setVisible(false);
+}
+
+void SwSidebarWin::ActivatePostIt()
+{
+ mrMgr.AssureStdModeAtShell();
+
+ mpOutliner->ClearModifyFlag();
+ mpOutliner->GetUndoManager().Clear();
+
+ CheckMetaText();
+ SetViewState(VS_EDIT);
+ GetOutlinerView()->ShowCursor();
+
+ mpOutlinerView->GetEditView().SetInsertMode(mrView.GetWrtShellPtr()->IsInsMode());
+
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ GetOutlinerView()->SetBackgroundColor(mColorDark);
+}
+
+void SwSidebarWin::DeactivatePostIt()
+{
+ // remove selection, #i87073#
+ if (GetOutlinerView()->GetEditView().HasSelection())
+ {
+ ESelection aSelection = GetOutlinerView()->GetEditView().GetSelection();
+ aSelection.nEndPara = aSelection.nStartPara;
+ aSelection.nEndPos = aSelection.nStartPos;
+ GetOutlinerView()->GetEditView().SetSelection(aSelection);
+ }
+
+ mpOutliner->CompleteOnlineSpelling();
+
+ SetViewState(VS_NORMAL);
+ // write the visible text back into the SwField
+ UpdateData();
+
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ GetOutlinerView()->SetBackgroundColor(COL_TRANSPARENT);
+
+
+ if ( !IsProtected() &&
+ Engine()->GetEditEngine().GetText()==String(EMPTYSTRING) )
+ {
+ mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0 );
+ }
+}
+
+void SwSidebarWin::ToggleInsMode()
+{
+ if (!mrView.GetWrtShell().IsRedlineOn())
+ {
+ //change outliner
+ mpOutlinerView->GetEditView().SetInsertMode(!mpOutlinerView->GetEditView().IsInsertMode());
+ //change documnet
+ mrView.GetWrtShell().ToggleInsMode();
+ //update statusbar
+ SfxBindings &rBnd = mrView.GetViewFrame()->GetBindings();
+ rBnd.Invalidate(SID_ATTR_INSERT);
+ rBnd.Update(SID_ATTR_INSERT);
+ }
+}
+
+void SwSidebarWin::ExecuteCommand(USHORT nSlot)
+{
+ mrMgr.AssureStdModeAtShell();
+
+ switch (nSlot)
+ {
+ case FN_POSTIT:
+ case FN_REPLY:
+ {
+ // if this note is empty, it will be deleted once losing the focus, so no reply, but only a new note
+ // will be created
+ if (Engine()->GetEditEngine().GetText() != String(EMPTYSTRING))
+ {
+ OutlinerParaObject* pPara = new OutlinerParaObject(*GetOutlinerView()->GetEditView().CreateTextObject());
+ mrMgr.RegisterAnswer(pPara);
+ }
+ if (mrMgr.HasActiveSidebarWin())
+ mrMgr.SetActiveSidebarWin(0);
+ SwitchToFieldPos();
+ mrView.GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
+ break;
+ }
+ case FN_DELETE_COMMENT:
+ case FN_DELETE_NOTE:
+
+ //Delete(); // do not kill the parent of our open popup menu
+ mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0 );
+ break;
+ case FN_DELETE_ALL_NOTES:
+ case FN_HIDE_ALL_NOTES:
+ // not possible as slot as this would require that "this" is the active postit
+ mrView.GetViewFrame()->GetBindings().Execute( nSlot, 0, 0, SFX_CALLMODE_ASYNCHRON );
+ break;
+ case FN_DELETE_NOTE_AUTHOR:
+ case FN_HIDE_NOTE_AUTHOR:
+ {
+ // not possible as slot as this would require that "this" is the active postit
+ SfxStringItem aItem( nSlot, GetAuthor() );
+ const SfxPoolItem* aItems[2];
+ aItems[0] = &aItem;
+ aItems[1] = 0;
+ mrView.GetViewFrame()->GetBindings().Execute( nSlot, aItems, 0, SFX_CALLMODE_ASYNCHRON );
+ }
+ default:
+ mrView.GetViewFrame()->GetBindings().Execute( nSlot );
+ break;
+ }
+}
+
+SwEditWin* SwSidebarWin::EditWin()
+{
+ return &mrView.GetEditWin();
+}
+
+long SwSidebarWin::GetPostItTextHeight()
+{
+ return mpOutliner ? LogicToPixel(mpOutliner->CalcTextSize()).Height() : 0;
+}
+
+void SwSidebarWin::SwitchToPostIt(USHORT aDirection)
+{
+ SwSidebarWin* pPostIt = mrMgr.GetNextPostIt(aDirection, this);
+ if (pPostIt)
+ pPostIt->GrabFocus();
+}
+
+IMPL_LINK( SwSidebarWin, WindowEventListener, VclSimpleEvent*, pEvent )
+{
+ VclWindowEvent* pWinEvent = dynamic_cast<VclWindowEvent*>(pEvent);
+ if ( pWinEvent )
+ {
+ if ( pWinEvent->GetId() == VCLEVENT_WINDOW_MOUSEMOVE )
+ {
+ MouseEvent* pMouseEvt = (MouseEvent*)pWinEvent->GetData();
+ if ( pMouseEvt->IsEnterWindow() )
+ {
+ mbMouseOver = true;
+ if ( !HasFocus() )
+ {
+ SetViewState(VS_VIEW);
+ Invalidate();
+ }
+ }
+ else if ( pMouseEvt->IsLeaveWindow())
+ {
+ if (IsPreview())
+ {
+ //doLazyDelete();
+ }
+ else
+ {
+ mbMouseOver = false;
+ if ( !HasFocus() )
+ {
+ SetViewState(VS_NORMAL);
+ Invalidate();
+ }
+ }
+ }
+ }
+ else if ( pWinEvent->GetId() == VCLEVENT_WINDOW_ACTIVATE &&
+ pWinEvent->GetWindow() == mpSidebarTxtControl )
+ {
+ const BOOL bLockView = mrView.GetWrtShell().IsViewLocked();
+ mrView.GetWrtShell().LockView( TRUE );
+
+ if ( !IsPreview() )
+ {
+ mrMgr.SetActiveSidebarWin( this );
+ }
+
+ mrView.GetWrtShell().LockView( bLockView );
+ mrMgr.MakeVisible( this );
+ }
+ else if ( pWinEvent->GetWindow() == mpSidebarTxtControl )
+ {
+ int i = 5;
+ ++i;
+ }
+ }
+ return sal_True;
+}
+
+void SwSidebarWin::Delete()
+{
+ if ( mrMgr.GetActiveSidebarWin() == this)
+ {
+ mrMgr.SetActiveSidebarWin(0);
+ // if the note is empty, the previous line will send a delete event, but we are already there
+ if (mnEventId)
+ {
+ Application::RemoveUserEvent( mnEventId );
+ mnEventId = 0;
+ }
+ }
+}
+
+IMPL_LINK(SwSidebarWin, ScrollHdl, ScrollBar*, pScroll)
+{
+ long nDiff = GetOutlinerView()->GetEditView().GetVisArea().Top() - pScroll->GetThumbPos();
+ GetOutlinerView()->Scroll( 0, nDiff );
+ return 0;
+}
+
+IMPL_LINK(SwSidebarWin, ModifyHdl, void*, pVoid)
+{
+ // no warnings, please
+ pVoid=0;
+ mrView.GetDocShell()->SetModified(sal_True);
+ return 0;
+}
+
+IMPL_LINK(SwSidebarWin, DeleteHdl, void*, pVoid)
+{
+ // no warnings, please
+ pVoid=0;
+ mnEventId = 0;
+ Delete();
+ return 0;
+}
+
+
+void SwSidebarWin::ResetAttributes()
+{
+ mpOutlinerView->RemoveAttribsKeepLanguages(TRUE);
+ mpOutliner->RemoveFields(TRUE);
+ mpOutlinerView->SetAttribs(DefaultItem());
+}
+
+sal_Int32 SwSidebarWin::GetScrollbarWidth()
+{
+ return mrView.GetWrtShell().GetViewOptions()->GetZoom() / 10;
+}
+
+sal_Int32 SwSidebarWin::GetMetaButtonAreaWidth()
+{
+ const Fraction& f( GetMapMode().GetScaleX() );
+ if (IsPreview())
+ return 3 * METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
+ else
+ return METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
+}
+
+sal_Int32 SwSidebarWin::GetMetaHeight()
+{
+ const Fraction& f( GetMapMode().GetScaleY() );
+ return POSTIT_META_HEIGHT * f.GetNumerator() / f.GetDenominator();
+}
+
+sal_Int32 SwSidebarWin::GetMinimumSizeWithMeta()
+{
+ return mrMgr.GetMinimumSizeWithMeta();
+}
+
+sal_Int32 SwSidebarWin::GetMinimumSizeWithoutMeta()
+{
+ const Fraction& f( GetMapMode().GetScaleY() );
+ return POSTIT_MINIMUMSIZE_WITHOUT_META * f.GetNumerator() / f.GetDenominator();
+}
+
+void SwSidebarWin::SetSpellChecking()
+{
+ const SwViewOption* pVOpt = mrView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = mpOutliner->GetControlWord();
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ mpOutliner->SetControlWord(nCntrl);
+
+ mpOutliner->CompleteOnlineSpelling();
+ Invalidate();
+}
+
+void SwSidebarWin::SetViewState(ViewState bViewState)
+{
+ switch (bViewState)
+ {
+ case VS_EDIT:
+ {
+ if (mpAnchor)
+ {
+ mpAnchor->SetAnchorState(AS_ALL);
+ SwSidebarWin* pWin = GetTopReplyNote();
+ if (pWin)
+ pWin->Anchor()->SetAnchorState(AS_END);
+ mpAnchor->setLineSolid(true);
+ }
+ if (mpShadow)
+ mpShadow->SetShadowState(SS_EDIT);
+ break;
+ }
+ case VS_VIEW:
+ {
+ if (mpAnchor)
+ mpAnchor->setLineSolid(true);
+ if (mpShadow)
+ mpShadow->SetShadowState(SS_VIEW);
+ break;
+ }
+ case VS_NORMAL:
+ {
+ if (mpAnchor)
+ {
+ if (IsFollow())
+ {
+ // if there is no visible parent note, we want to see the complete anchor ??
+ //if (IsAnyStackParentVisible())
+ mpAnchor->SetAnchorState(AS_END);
+ SwSidebarWin* pTopWinSelf = GetTopReplyNote();
+ SwSidebarWin* pTopWinActive = mrMgr.HasActiveSidebarWin()
+ ? mrMgr.GetActiveSidebarWin()->GetTopReplyNote()
+ : 0;
+ if (pTopWinSelf && (pTopWinSelf!=pTopWinActive))
+ {
+ if (pTopWinSelf!=mrMgr.GetActiveSidebarWin())
+ pTopWinSelf->Anchor()->setLineSolid(false);
+ pTopWinSelf->Anchor()->SetAnchorState(AS_ALL);
+ }
+ }
+ mpAnchor->setLineSolid(false);
+ }
+ if (mpShadow)
+ mpShadow->SetShadowState(SS_NORMAL);
+ break;
+ }
+ }
+}
+
+SwSidebarWin* SwSidebarWin::GetTopReplyNote()
+{
+ SwSidebarWin* pTopNote = 0;
+ SwSidebarWin* pSidebarWin = IsFollow() ? mrMgr.GetNextPostIt(KEY_PAGEUP, this) : 0;
+ while (pSidebarWin)
+ {
+ pTopNote = pSidebarWin;
+ pSidebarWin = pSidebarWin->IsFollow() ? mrMgr.GetNextPostIt(KEY_PAGEUP, pSidebarWin) : 0;
+ }
+ return pTopNote;
+}
+
+void SwSidebarWin::SwitchToFieldPos()
+{
+ if ( mrMgr.GetActiveSidebarWin() == this )
+ mrMgr.SetActiveSidebarWin(0);
+ GotoPos();
+ sal_uInt32 aCount = MoveCaret();
+ if (aCount)
+ mrView.GetDocShell()->GetWrtShell()->SwCrsrShell::Right(aCount, 0, FALSE);
+ GrabFocusToDocument();
+}
+
+SvxLanguageItem SwSidebarWin::GetLanguage(void)
+{
+ return SvxLanguageItem(SwLangHelper::GetLanguage(mrView.GetWrtShell(),RES_CHRATR_LANGUAGE),RES_CHRATR_LANGUAGE);
+}
+
+void SwSidebarWin::SetChangeTracking( const SwPostItHelper::SwLayoutStatus aLayoutStatus,
+ const Color& aChangeColor )
+{
+ if ( (mLayoutStatus != aLayoutStatus) ||
+ (mChangeColor != aChangeColor) )
+ {
+ mLayoutStatus = aLayoutStatus;
+ mChangeColor = aChangeColor;
+ Invalidate();
+ }
+}
+
+bool SwSidebarWin::HasScrollbar() const
+{
+ return mpVScrollbar != 0;
+}
+
+bool SwSidebarWin::IsScrollbarVisible() const
+{
+ return HasScrollbar() && mpVScrollbar->IsVisible();
+}
+
+void SwSidebarWin::ChangeSidebarItem( SwSidebarItem& rSidebarItem )
+{
+ const bool bAnchorChanged = mpAnchorFrm != rSidebarItem.maLayoutInfo.mpAnchorFrm;
+ if ( bAnchorChanged )
+ {
+ mrMgr.DisconnectSidebarWinFromFrm( *(mpAnchorFrm), *this );
+ }
+
+ mrSidebarItem = rSidebarItem;
+ mpAnchorFrm = mrSidebarItem.maLayoutInfo.mpAnchorFrm;
+
+ if ( GetWindowPeer() )
+ {
+ SidebarWinAccessible* pAcc =
+ static_cast<SidebarWinAccessible*>( GetWindowPeer() );
+ ASSERT( dynamic_cast<SidebarWinAccessible*>( GetWindowPeer() ),
+ "<SwSidebarWin::ChangeSidebarItem(..)> - unexpected type of window peer -> crash possible!" );
+ pAcc->ChangeSidebarItem( mrSidebarItem );
+ }
+
+ if ( bAnchorChanged )
+ {
+ mrMgr.ConnectSidebarWinToFrm( *(mrSidebarItem.maLayoutInfo.mpAnchorFrm),
+ *(mrSidebarItem.GetFmtFld()),
+ *this );
+ }
+}
+
+css::uno::Reference< css::accessibility::XAccessible > SwSidebarWin::CreateAccessible()
+{
+ SidebarWinAccessible* pAcc( new SidebarWinAccessible( *this,
+ mrView.GetWrtShell(),
+ mrSidebarItem ) );
+ css::uno::Reference< css::awt::XWindowPeer > xWinPeer( pAcc );
+ SetWindowPeer( xWinPeer, pAcc );
+
+ css::uno::Reference< css::accessibility::XAccessible > xAcc( xWinPeer, css::uno::UNO_QUERY );
+ return xAcc;
+}
+
+} } // eof of namespace sw::sidebarwindows
+
+/********** SwRedComment**************/
+/*
+SwRedComment::SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed)
+ : SwSidebarWin(pParent,nBits,aMgr,aBits),
+ pRedline(pRed)
+{
+}
+
+void SwRedComment::SetPopup()
+{
+ mpButtonPopup = new PopupMenu(SW_RES(MN_REDCOMMENT_BUTTON));
+ //mpButtonPopup->SetMenuFlags(MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES);
+}
+
+void SwRedComment::UpdateData()
+{
+ if ( Engine()->IsModified() )
+ {
+ // so we get a new layout of notes (Anchor position is still the same and we would otherwise not get one)
+ Mgr()->SetLayout();
+ // SetRedline is calling SetModified already
+ DocView()->GetWrtShell().SetRedlineComment(Engine()->GetEditEngine().GetText());
+ }
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+}
+
+void SwRedComment::SetPostItText()
+{
+ Engine()->SetModifyHdl( Link() );
+ Engine()->EnableUndo( FALSE );
+
+ Engine()->Clear();
+ View()->SetAttribs(DefaultItem());
+ View()->InsertText(pRedline->GetComment(),false);
+
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+ Engine()->EnableUndo( TRUE );
+ Engine()->SetModifyHdl( LINK( this, SwSidebarWin, ModifyHdl ) );
+ Invalidate();
+}
+
+void SwRedComment::DeactivatePostIt()
+{
+ SwSidebarWin::DeactivatePostIt();
+ // current Redline is still selected
+ DocView()->GetWrtShellPtr()->ClearMark();
+}
+
+void SwRedComment::ActivatePostIt()
+{
+ SwSidebarWin::ActivatePostIt();
+
+ // do we want the redline selected?
+ // otherwise, SwRedComment::ActivatePostIt() as well as SwRedComment::DeactivatePostIt()
+ // can be thrown out completly
+ DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
+ DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()),true);
+}
+
+void SwRedComment::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())) && rMEvt.IsLeft())
+ {
+ ExecuteCommand( mpButtonPopup->Execute( this,Rectangle(LogicToPixel(mRectMetaButton.BottomLeft()),LogicToPixel(mRectMetaButton.BottomLeft())),POPUPMENU_EXECUTE_DOWN | POPUPMENU_NOMOUSEUPCLOSE) );
+ }
+}
+
+void SwRedComment::Delete()
+{
+ SwSidebarWin::Delete();
+ // we are not neccessarily on our redline, so let's move there
+ GotoPos();
+ DocView()->GetWrtShell().SetRedlineComment(EMPTYSTRING);
+ DocView()->GetWrtShell().ClearMark();
+ // so we get a new layout of notes (Anchor position is still the same and we would otherwise not get one)
+ Mgr()->SetLayout();
+ Mgr()->RemoveItem(pRedline);
+}
+
+void SwRedComment::GotoPos()
+{
+ DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
+ DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()));
+}
+
+String SwRedComment::GetAuthor()
+{
+ return pRedline->GetAuthorString();
+}
+
+Date SwRedComment::GetDate()
+{
+ return pRedline->GetTimeStamp().GetDate();
+}
+
+Time SwRedComment::GetTime()
+{
+ return pRedline->GetTimeStamp().GetTime();
+}
+
+bool SwRedComment::IsProtected()
+{
+ return SwSidebarWin::IsProtected() || pRedline->Start()->nNode.GetNode().GetTxtNode()->IsInProtectSect();
+}
+*/
diff --git a/sw/source/ui/docvw/SidebarWinAcc.cxx b/sw/source/ui/docvw/SidebarWinAcc.cxx
new file mode 100644
index 000000000000..214913963dcb
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarWinAcc.cxx
@@ -0,0 +1,162 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarWinAcc.hxx>
+
+#include <SidebarWin.hxx>
+#include <viewsh.hxx>
+#include <accmap.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+// =============================================================================
+// declaration and implementation of accessible context for <SidebarWinAccessible> instance
+// =============================================================================
+class SidebarWinAccessibleContext : public VCLXAccessibleComponent
+{
+ public:
+ explicit SidebarWinAccessibleContext( SwSidebarWin& rSidebarWin,
+ ViewShell& rViewShell,
+ const SwFrm* pAnchorFrm )
+ : VCLXAccessibleComponent( rSidebarWin.GetWindowPeer() )
+ , mrViewShell( rViewShell )
+ , mpAnchorFrm( pAnchorFrm )
+ , maMutex()
+ {
+ rSidebarWin.SetAccessibleRole( css::accessibility::AccessibleRole::COMMENT );
+ }
+
+ virtual ~SidebarWinAccessibleContext()
+ {}
+
+ void ChangeAnchor( const SwFrm* pAnchorFrm )
+ {
+ vos::OGuard aGuard(maMutex);
+
+ mpAnchorFrm = pAnchorFrm;
+ }
+
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent() throw (css::uno::RuntimeException)
+ {
+ vos::OGuard aGuard(maMutex);
+
+ css::uno::Reference< css::accessibility::XAccessible > xAccParent;
+
+ if ( mpAnchorFrm &&
+ mrViewShell.GetAccessibleMap() )
+ {
+ xAccParent = mrViewShell.GetAccessibleMap()->GetContext( mpAnchorFrm, sal_False );
+ }
+
+ return xAccParent;
+ }
+
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() throw (css::uno::RuntimeException)
+ {
+ vos::OGuard aGuard(maMutex);
+
+ sal_Int32 nIndex( -1 );
+
+ if ( mpAnchorFrm && GetWindow() &&
+ mrViewShell.GetAccessibleMap() )
+ {
+ nIndex = mrViewShell.GetAccessibleMap()->GetChildIndex( *mpAnchorFrm,
+ *GetWindow() );
+ }
+
+ return nIndex;
+ }
+
+ private:
+ ViewShell& mrViewShell;
+ const SwFrm* mpAnchorFrm;
+
+ ::vos::OMutex maMutex;
+};
+
+// =============================================================================
+// implementaion of accessible for <SwSidebarWin> instance
+// =============================================================================
+SidebarWinAccessible::SidebarWinAccessible( SwSidebarWin& rSidebarWin,
+ ViewShell& rViewShell,
+ const SwSidebarItem& rSidebarItem )
+ : VCLXWindow()
+ , mrSidebarWin( rSidebarWin )
+ , mrViewShell( rViewShell )
+ , mpAnchorFrm( rSidebarItem.maLayoutInfo.mpAnchorFrm )
+ , bAccContextCreated( false )
+{
+ SetWindow( &mrSidebarWin );
+}
+
+SidebarWinAccessible::~SidebarWinAccessible()
+{
+}
+
+void SidebarWinAccessible::ChangeSidebarItem( const SwSidebarItem& rSidebarItem )
+{
+ if ( bAccContextCreated )
+ {
+ css::uno::Reference< css::accessibility::XAccessibleContext > xAcc
+ = getAccessibleContext();
+ if ( xAcc.is() )
+ {
+ SidebarWinAccessibleContext* pAccContext =
+ dynamic_cast<SidebarWinAccessibleContext*>(xAcc.get());
+ if ( pAccContext )
+ {
+ pAccContext->ChangeAnchor( rSidebarItem.maLayoutInfo.mpAnchorFrm );
+ }
+ }
+ }
+}
+
+css::uno::Reference< css::accessibility::XAccessibleContext > SidebarWinAccessible::CreateAccessibleContext()
+{
+ SidebarWinAccessibleContext* pAccContext =
+ new SidebarWinAccessibleContext( mrSidebarWin,
+ mrViewShell,
+ mpAnchorFrm );
+ css::uno::Reference< css::accessibility::XAccessibleContext > xAcc( pAccContext );
+ bAccContextCreated = true;
+ return xAcc;
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/SidebarWinAcc.hxx b/sw/source/ui/docvw/SidebarWinAcc.hxx
new file mode 100644
index 000000000000..0abe1acbfaf5
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarWinAcc.hxx
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARWINACC_HXX
+#define _SIDEBARWINACC_HXX
+
+#include <toolkit/awt/vclxwindow.hxx>
+
+class ViewShell;
+class SwSidebarItem;
+class SwFrm;
+
+namespace sw { namespace sidebarwindows {
+
+class SwSidebarWin;
+
+class SidebarWinAccessible : public VCLXWindow
+{
+ public:
+ explicit SidebarWinAccessible( SwSidebarWin& rSidebarWin,
+ ViewShell& rViewShell,
+ const SwSidebarItem& rSidebarItem );
+ virtual ~SidebarWinAccessible();
+
+ virtual com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessibleContext >
+ CreateAccessibleContext();
+
+ void ChangeSidebarItem( const SwSidebarItem& rSidebarItem );
+
+ private:
+ SwSidebarWin& mrSidebarWin;
+ ViewShell& mrViewShell;
+ const SwFrm* mpAnchorFrm;
+ bool bAccContextCreated;
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/access.src b/sw/source/ui/docvw/access.src
index 17f06e8a0037..42081d3ab7e7 100644
--- a/sw/source/ui/docvw/access.src
+++ b/sw/source/ui/docvw/access.src
@@ -83,4 +83,20 @@ String STR_ACCESS_PAGE_DESC
{
Text [ en-US ] = "Page: $(ARG1)";
};
+String STR_ACCESS_ANNOTATION_AUTHOR_NAME
+{
+ Text [ en-US ] = "Author";
+};
+String STR_ACCESS_ANNOTATION_DATE_NAME
+{
+ Text [ en-US ] = "Date";
+};
+String STR_ACCESS_ANNOTATION_BUTTON_NAME
+{
+ Text [ en-US ] = "Actions";
+};
+String STR_ACCESS_ANNOTATION_BUTTON_DESC
+{
+ Text [ en-US ] = "Activate this button to open a list of actions which can be performed on this comment and other comments";
+};
diff --git a/sw/source/ui/docvw/annotation.hrc b/sw/source/ui/docvw/annotation.hrc
new file mode 100644
index 000000000000..e43a90342409
--- /dev/null
+++ b/sw/source/ui/docvw/annotation.hrc
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _ANNOTATION_HRC
+#define _ANNOTATION_HRC
+
+#include "rcid.hrc"
+
+#define STR_POSTIT_TODAY (RC_ANNOTATION_BEGIN + 1)
+#define STR_POSTIT_YESTERDAY (RC_ANNOTATION_BEGIN + 2)
+
+#define STR_DELETE_ALL_NOTES (RC_ANNOTATION_BEGIN + 3)
+#define STR_DELETE_AUTHOR_NOTES (RC_ANNOTATION_BEGIN + 4)
+
+#define STR_NODATE (RC_ANNOTATION_BEGIN + 5)
+#define STR_NOAUTHOR (RC_ANNOTATION_BEGIN + 6)
+
+#define STR_REPLY (RC_ANNOTATION_BEGIN + 7)
+
+
+#define ANNOTATION_ACT_END STR_REPLY
+#if ANNOTATION_ACT_END > RC_ANNOTATION_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif
diff --git a/sd/inc/segdefs.hxx b/sw/source/ui/docvw/annotation.src
index fc06d39b4ac1..8dcda9c25b8c 100644
--- a/sd/inc/segdefs.hxx
+++ b/sw/source/ui/docvw/annotation.src
@@ -2,10 +2,13 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
+ * $RCSfile: $
+ * $Revision: $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -24,6 +27,42 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#include <segdefs_.hxx>
+#include "annotation.hrc"
+#include "cmdid.h"
+
+String STR_POSTIT_TODAY
+{
+ Text [ en-US ] = "Today," ;
+};
+
+String STR_POSTIT_YESTERDAY
+{
+ Text [ en-US ] = "Yesterday," ;
+};
+
+String STR_DELETE_ALL_NOTES
+{
+ Text [ en-US ] = "All Comments" ;
+};
+
+String STR_DELETE_AUTHOR_NOTES
+{
+ Text [ en-US ] = "Comments by " ;
+};
+
+String STR_NODATE
+{
+ Text [ en-US ] = "(no date)" ;
+};
+
+String STR_NOAUTHOR
+{
+ Text [ en-US ] = "(no author)" ;
+};
+
+String STR_REPLY
+{
+ Text [ en-US ] = "Reply to $1" ;
+};
diff --git a/sw/source/ui/docvw/docvw.hrc b/sw/source/ui/docvw/docvw.hrc
index 31fd6a04949e..c0f15291795b 100644
--- a/sw/source/ui/docvw/docvw.hrc
+++ b/sw/source/ui/docvw/docvw.hrc
@@ -81,17 +81,6 @@
#define STR_SMARTTAG_CLICK (RC_DOCVW_BEGIN + 21)
-#define STR_POSTIT_TODAY (RC_DOCVW_BEGIN + 22)
-#define STR_POSTIT_YESTERDAY (RC_DOCVW_BEGIN + 23)
-
-#define STR_DELETE_ALL_NOTES (RC_DOCVW_BEGIN + 24)
-#define STR_DELETE_AUTHOR_NOTES (RC_DOCVW_BEGIN + 25)
-
-#define STR_NODATE (RC_DOCVW_BEGIN + 26)
-#define STR_NOAUTHOR (RC_DOCVW_BEGIN + 27)
-
-#define STR_REPLY (RC_DOCVW_BEGIN + 28)
-
#define MSG_READONLY_CONTENT (RC_DOCVW_BEGIN + 1)
#define DOCVW_ACT_END STR_SMARTTAG_CLICK
diff --git a/sw/source/ui/docvw/docvw.src b/sw/source/ui/docvw/docvw.src
index d38f249d905e..dcd0f98103f4 100644
--- a/sw/source/ui/docvw/docvw.src
+++ b/sw/source/ui/docvw/docvw.src
@@ -294,38 +294,3 @@ String STR_SMARTTAG_CLICK
Text [ en-US ] = "%s-click to open Smart Tag menu" ;
};
-String STR_POSTIT_TODAY
-{
- Text [ en-US ] = "Today," ;
-};
-
-String STR_POSTIT_YESTERDAY
-{
- Text [ en-US ] = "Yesterday," ;
-};
-
-String STR_DELETE_ALL_NOTES
-{
- Text [ en-US ] = "All Comments" ;
-};
-
-String STR_DELETE_AUTHOR_NOTES
-{
- Text [ en-US ] = "Comments by " ;
-};
-
-String STR_NODATE
-{
- Text [ en-US ] = "(no date)" ;
-};
-
-String STR_NOAUTHOR
-{
- Text [ en-US ] = "(no author)" ;
-};
-
-String STR_REPLY
-{
- Text [ en-US ] = "Reply to $1" ;
-};
-
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index 0a0bde33327b..e2e59e17831e 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -139,8 +139,7 @@
#include <doc.hxx>
#include <xmloff/odffields.hxx>
-#include "PostItMgr.hxx"
-#include "postit.hxx"
+#include <PostItMgr.hxx>
//JP 11.10.2001: enable test code for bug fix 91313
#if defined(DBG_UTIL) && (OSL_DEBUG_LEVEL > 1)
@@ -1342,8 +1341,8 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt)
}
aKeyEvent = KeyEvent( rKEvt.GetCharCode(),
- KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ),
- rKEvt.GetRepeat() );
+ KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ),
+ rKEvt.GetRepeat() );
}
}
@@ -2262,7 +2261,8 @@ KEYINPUT_CHECKTABLE_INSDEL:
BOOL bIsAutoCorrectChar = SvxAutoCorrect::IsAutoCorrectChar( aCh );
- if( !aKeyEvent.GetRepeat() && pACorr && bIsAutoCorrectChar &&
+ BOOL bRunNext = pACorr->HasRunNext();
+ if( !aKeyEvent.GetRepeat() && pACorr && ( bIsAutoCorrectChar || bRunNext ) &&
pACfg->IsAutoFmtByInput() &&
(( pACorr->IsAutoCorrFlag( ChgWeightUnderl ) &&
( '*' == aCh || '_' == aCh ) ) ||
@@ -2274,14 +2274,13 @@ KEYINPUT_CHECKTABLE_INSDEL:
if( '\"' != aCh && '\'' != aCh ) // nur bei "*_" rufen!
rSh.UpdateAttr();
}
- else if( !aKeyEvent.GetRepeat() && pACorr && bIsAutoCorrectChar &&
+ else if( !aKeyEvent.GetRepeat() && pACorr && ( bIsAutoCorrectChar || bRunNext ) &&
pACfg->IsAutoFmtByInput() &&
pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
- ChgOrdinalNumber |
+ ChgOrdinalNumber | AddNonBrkSpace |
ChgToEnEmDash | SetINetAttr |
Autocorrect ) &&
- '\"' != aCh && '\'' != aCh && '*' != aCh && '_' != aCh &&
- !bIsNormalChar
+ '\"' != aCh && '\'' != aCh && '*' != aCh && '_' != aCh
)
{
FlushInBuffer();
@@ -2605,7 +2604,7 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
if (rView.GetPostItMgr()->IsHit(rMEvt.GetPosPixel()))
return;
- rView.GetPostItMgr()->SetActivePostIt(0);
+ rView.GetPostItMgr()->SetActiveSidebarWin(0);
GrabFocus();
@@ -4701,8 +4700,10 @@ BOOL SwEditWin::IsDrawSelMode()
void SwEditWin::GetFocus()
{
- if (rView.GetPostItMgr()->GetActivePostIt())
- rView.GetPostItMgr()->GetActivePostIt()->GrabFocus();
+ if ( rView.GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ rView.GetPostItMgr()->GrabFocusOnActiveSidebarWin();
+ }
else
{
rView.GotFocus();
diff --git a/sw/source/ui/docvw/edtwin2.cxx b/sw/source/ui/docvw/edtwin2.cxx
index d605ef993457..763504c75db6 100644
--- a/sw/source/ui/docvw/edtwin2.cxx
+++ b/sw/source/ui/docvw/edtwin2.cxx
@@ -87,7 +87,6 @@
#include <utlui.hrc>
#endif
-#include <postit.hxx>
#include <PostItMgr.hxx>
#include <fmtfld.hxx>
diff --git a/sw/source/ui/docvw/frmsidebarwincontainer.cxx b/sw/source/ui/docvw/frmsidebarwincontainer.cxx
new file mode 100644
index 000000000000..b5e406dcf69b
--- /dev/null
+++ b/sw/source/ui/docvw/frmsidebarwincontainer.cxx
@@ -0,0 +1,216 @@
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+
+#include <frmsidebarwincontainer.hxx>
+
+#include <map>
+#include <fmtfld.hxx>
+#include <txtfld.hxx>
+#include <SidebarWin.hxx>
+
+namespace {
+ struct SidebarWinKey
+ {
+ const xub_StrLen mnIndex;
+
+ explicit SidebarWinKey( const xub_StrLen nIndex )
+ : mnIndex( nIndex )
+ {}
+
+ bool operator < ( const SidebarWinKey& rSidebarWinKey ) const
+ {
+ return mnIndex < rSidebarWinKey.mnIndex;
+ }
+ };
+
+ struct SidebarWinOrder
+ {
+ sal_Bool operator()( const SidebarWinKey& rSidebarWinKeyA,
+ const SidebarWinKey& rSidebarWinKeyB ) const
+ {
+ return rSidebarWinKeyA < rSidebarWinKeyB;
+ }
+ };
+
+ typedef ::std::map < SidebarWinKey, sw::sidebarwindows::SwSidebarWin*, SidebarWinOrder > SidebarWinContainer;
+
+ struct FrmKey
+ {
+ const SwFrm* mpFrm;
+
+ explicit FrmKey( const SwFrm* pFrm )
+ : mpFrm( pFrm )
+ {}
+
+ bool operator < ( const FrmKey& rFrmKey ) const
+ {
+ return mpFrm < rFrmKey.mpFrm;
+ }
+ };
+
+ struct FrmOrder
+ {
+ sal_Bool operator()( const FrmKey& rFrmKeyA,
+ const FrmKey& rFrmKeyB ) const
+ {
+ return rFrmKeyA < rFrmKeyB;
+ }
+ };
+
+ typedef ::std::map < FrmKey, SidebarWinContainer, FrmOrder > _FrmSidebarWinContainer;
+}
+
+namespace sw { namespace sidebarwindows {
+
+class FrmSidebarWinContainer : public _FrmSidebarWinContainer
+{
+};
+
+SwFrmSidebarWinContainer::SwFrmSidebarWinContainer()
+ : mpFrmSidebarWinContainer( new FrmSidebarWinContainer() )
+{}
+
+SwFrmSidebarWinContainer::~SwFrmSidebarWinContainer()
+{
+ mpFrmSidebarWinContainer->clear();
+ delete mpFrmSidebarWinContainer;
+}
+
+bool SwFrmSidebarWinContainer::insert( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ SwSidebarWin& rSidebarWin )
+{
+ bool bInserted( false );
+
+ FrmKey aFrmKey( &rFrm );
+ SidebarWinContainer& rSidebarWinContainer = (*mpFrmSidebarWinContainer)[ aFrmKey ];
+
+ SidebarWinKey aSidebarWinKey( *(rFmtFld.GetTxtFld()->GetStart()) );
+ if ( rSidebarWinContainer.empty() ||
+ rSidebarWinContainer.find( aSidebarWinKey) == rSidebarWinContainer.end() )
+ {
+ rSidebarWinContainer[ aSidebarWinKey ] = &rSidebarWin;
+ bInserted = true;
+ }
+
+ return bInserted;
+}
+
+bool SwFrmSidebarWinContainer::remove( const SwFrm& rFrm,
+ const SwSidebarWin& rSidebarWin )
+{
+ bool bRemoved( false );
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ SidebarWinContainer& rSidebarWinContainer = (*aFrmIter).second;
+ for ( SidebarWinContainer::iterator aIter = rSidebarWinContainer.begin();
+ aIter != rSidebarWinContainer.end();
+ ++aIter )
+ {
+ if ( (*aIter).second == &rSidebarWin )
+ {
+ rSidebarWinContainer.erase( aIter );
+ bRemoved = true;
+ break;
+ }
+ }
+ }
+
+ return bRemoved;
+}
+
+bool SwFrmSidebarWinContainer::empty( const SwFrm& rFrm )
+{
+ bool bEmpty( true );
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ bEmpty = (*aFrmIter).second.empty();
+ }
+
+ return bEmpty;
+}
+
+SwSidebarWin* SwFrmSidebarWinContainer::get( const SwFrm& rFrm,
+ const sal_Int32 nIndex )
+{
+ SwSidebarWin* pRet( 0 );
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ SidebarWinContainer& rSidebarWinContainer = (*aFrmIter).second;
+ sal_Int32 nCounter( nIndex );
+ for ( SidebarWinContainer::iterator aIter = rSidebarWinContainer.begin();
+ nCounter >= 0 && aIter != rSidebarWinContainer.end();
+ ++aIter )
+ {
+ if ( nCounter == 0 )
+ {
+ pRet = (*aIter).second;
+ break;
+ }
+
+ --nCounter;
+ }
+ }
+
+ return pRet;
+}
+
+void SwFrmSidebarWinContainer::getAll( const SwFrm& rFrm,
+ std::vector< Window* >* pSidebarWins )
+{
+ pSidebarWins->clear();
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ SidebarWinContainer& rSidebarWinContainer = (*aFrmIter).second;
+ for ( SidebarWinContainer::iterator aIter = rSidebarWinContainer.begin();
+ aIter != rSidebarWinContainer.end();
+ ++aIter )
+ {
+ pSidebarWins->push_back( (*aIter).second );
+ }
+ }
+}
+
+} } // eof of namespace sw::sidebarwindows::
diff --git a/sw/source/ui/docvw/frmsidebarwincontainer.hxx b/sw/source/ui/docvw/frmsidebarwincontainer.hxx
new file mode 100644
index 000000000000..1583f36a0bb6
--- /dev/null
+++ b/sw/source/ui/docvw/frmsidebarwincontainer.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _FRMSIDEBARWINCONTAINER_HXX
+#define _FRMSIDEBARWINCONTAINER_HXX
+
+#include <sal/types.h>
+#include <vector>
+
+class SwFrm;
+class SwFmtFld;
+class Window;
+
+namespace sw { namespace sidebarwindows {
+
+class SwSidebarWin;
+class FrmSidebarWinContainer;
+
+class SwFrmSidebarWinContainer
+{
+ public:
+ SwFrmSidebarWinContainer();
+ ~SwFrmSidebarWinContainer();
+
+ bool insert( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ SwSidebarWin& rSidebarWin );
+
+ bool remove( const SwFrm& rFrm,
+ const SwSidebarWin& rSidebarWin );
+
+ bool empty( const SwFrm& rFrm );
+
+ SwSidebarWin* get( const SwFrm& rFrm,
+ const sal_Int32 nIndex );
+
+ void getAll( const SwFrm& rFrm,
+ std::vector< Window* >* pSidebarWins );
+
+ private:
+ FrmSidebarWinContainer* mpFrmSidebarWinContainer;
+};
+
+} } // eof of namespace sw::sidebarwindows::
+
+#endif
+
diff --git a/sw/source/ui/docvw/makefile.mk b/sw/source/ui/docvw/makefile.mk
index c3644c83f267..a2914b2f86b7 100644
--- a/sw/source/ui/docvw/makefile.mk
+++ b/sw/source/ui/docvw/makefile.mk
@@ -42,7 +42,8 @@ ENABLE_EXCEPTIONS=TRUE
SRS1NAME=$(TARGET)
SRC1FILES = \
access.src \
- docvw.src
+ docvw.src \
+ annotation.src
SLOFILES = \
$(SLO)$/edtdd.obj \
@@ -51,8 +52,16 @@ SLOFILES = \
$(SLO)$/edtwin3.obj \
$(SLO)$/romenu.obj \
$(SLO)$/srcedtw.obj \
- $(SLO)$/postit.obj \
- $(SLO)$/PostItMgr.obj
+ $(SLO)$/PostItMgr.obj \
+ $(SLO)$/frmsidebarwincontainer.obj \
+ $(SLO)$/AnchorOverlayObject.obj \
+ $(SLO)$/ShadowOverlayObject.obj \
+ $(SLO)$/SidebarWin.obj \
+ $(SLO)$/SidebarWinAcc.obj \
+ $(SLO)$/AnnotationWin.obj \
+ $(SLO)$/AnnotationMenuButton.obj \
+ $(SLO)$/SidebarTxtControl.obj \
+ $(SLO)$/SidebarTxtControlAcc.obj
# --- Tagets -------------------------------------------------------
diff --git a/sw/source/ui/docvw/postit.cxx b/sw/source/ui/docvw/postit.cxx
deleted file mode 100644
index 06d26534abfd..000000000000
--- a/sw/source/ui/docvw/postit.cxx
+++ /dev/null
@@ -1,2482 +0,0 @@
-/************************************************************************* *
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "precompiled_sw.hxx"
-#include <postit.hxx>
-#include <PostItMgr.hxx>
-
-#include <popup.hrc>
-#include <docvw.hrc>
-#include <app.hrc>
-
-#include <hintids.hxx>
-#include "viewopt.hxx"
-#include "cmdid.h"
-
-#include <tools/poly.hxx> // Polygon
-
-#include <editeng/postitem.hxx>
-#include <editeng/fontitem.hxx>
-#include <editeng/eeitem.hxx>
-#include <editeng/fhgtitem.hxx>
-#include <editeng/bulitem.hxx>
-#include <editeng/udlnitem.hxx>
-#include <editeng/shdditem.hxx>
-#include <editeng/wghtitem.hxx>
-#include <editeng/colritem.hxx>
-#include <editeng/flditem.hxx>
-#include <editeng/frmdir.hxx>
-#include <editeng/frmdiritem.hxx>
-#include <editeng/langitem.hxx>
-#include <editeng/adjitem.hxx>
-#include <editeng/editview.hxx>
-#include <svx/svdview.hxx>
-#include <svx/sdrpaintwindow.hxx>
-#include <svx/sdr/overlay/overlaymanager.hxx>
-#include <editeng/editstat.hxx> //EditEngine flags
-#include <editeng/outliner.hxx>
-#include <editeng/editeng.hxx>
-#include <editeng/editobj.hxx>
-#include <editeng/unolingu.hxx>
-
-#include <svtools/langtab.hxx>
-#include <svl/slstitm.hxx>
-#include <unotools/securityoptions.hxx>
-#include <unotools/useroptions.hxx>
-#include <svl/languageoptions.hxx>
-#include <svl/zforlist.hxx>
-#include <svtools/svmedit.hxx>
-
-#include <linguistic/lngprops.hxx>
-
-#include <sfx2/request.hxx>
-#include <sfx2/viewfrm.hxx>
-#include <sfx2/bindings.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/mnumgr.hxx>
-
-#include <vcl/vclenum.hxx>
-#include <vcl/edit.hxx>
-#include <vcl/help.hxx>
-#include <vcl/scrbar.hxx>
-#include <vcl/button.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/gradient.hxx>
-#include <vcl/salbtype.hxx> // FRound
-#include <vcl/msgbox.hxx>
-
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/tuple/b2dtuple.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-
-#include <swrect.hxx>
-#include <docufld.hxx> // SwPostItField
-#include <edtwin.hxx>
-#include <view.hxx>
-#include <viewsh.hxx>
-#include <docsh.hxx>
-#include <shellres.hxx>
-#include <fmtfld.hxx>
-#include <wrtsh.hxx>
-#include <textsh.hxx>
-#include <doc.hxx>
-#include <txtfld.hxx>
-#include <redline.hxx>
-#include <uitool.hxx>
-#include <SwUndoField.hxx>
-#include <editsh.hxx>
-#include <swmodule.hxx>
-#include <node.hxx>
-#include <ndtxt.hxx>
-#include <langhelper.hxx>
-
-#include <sw_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
-
-using namespace ::com::sun::star;
-
-#define METABUTTON_WIDTH 16
-#define METABUTTON_HEIGHT 18
-#define METABUTTON_AREA_WIDTH 30
-#define POSTIT_META_HEIGHT (sal_Int32) 30
-#define POSTIT_MINIMUMSIZE_WITHOUT_META 50
-
-#define POSTIT_SHADOW_BRIGHT Color(180,180,180)
-#define POSTIT_SHADOW_DARK Color(83,83,83)
-
-#define LINEBREAK rtl::OUString::createFromAscii("\n")
-#define EMPTYSTRING rtl::OUString::createFromAscii("")
-
-TYPEINIT0(SwMarginWin);
-TYPEINIT1(SwPostIt,SwMarginWin);
-//TYPEINIT1(SwRedComment,SwMarginWin);
-
-Color ColorFromAlphaColor(UINT8 aTransparency, Color &aFront, Color &aBack )
-{
- return Color((UINT8)(aFront.GetRed() * aTransparency/(double)255 + aBack.GetRed() * (1-aTransparency/(double)255)),
- (UINT8)(aFront.GetGreen() * aTransparency/(double)255 + aBack.GetGreen() * (1-aTransparency/(double)255)),
- (UINT8)(aFront.GetBlue() * aTransparency/(double)255 + aBack.GetBlue() * (1-aTransparency/(double)255)));
-}
-
-/************ PostItTxt **************************************/
-PostItTxt::PostItTxt(Window* pParent, WinBits nBits) : Window(pParent, nBits), mpOutlinerView(0),mMouseOver(false),mbShowPopup(FALSE)
-{
- SetHelpId(26276);
- AddEventListener( LINK( this, PostItTxt, WindowEventListener ) );
- mpMarginWin = static_cast<SwMarginWin*>(GetParent());
-}
-
-PostItTxt::~PostItTxt()
-{
- RemoveEventListener( LINK( this, PostItTxt, WindowEventListener ) );
-}
-
-void PostItTxt::GetFocus()
-{
- BOOL bLockView = mpMarginWin->DocView()->GetWrtShell().IsViewLocked();
- mpMarginWin->DocView()->GetWrtShell().LockView( TRUE );
-
- if(mpMarginWin && !mpMarginWin->IsPreview())
- mpMarginWin->Mgr()->SetActivePostIt(mpMarginWin);
- Window::GetFocus();
- if (!mMouseOver)
- Invalidate();
-
- mpMarginWin->DocView()->GetWrtShell().LockView( bLockView );
- mpMarginWin->Mgr()->MakeVisible(mpMarginWin);
-}
-
-void PostItTxt::LoseFocus()
-{
- // write the visible text back into the SwField
- if ( mpMarginWin )
- mpMarginWin->UpdateData();
-
- Window::LoseFocus();
- if (!mMouseOver)
- Invalidate();
-}
-
-void PostItTxt::RequestHelp(const HelpEvent &rEvt)
-{
- USHORT nResId = 0;
- switch( mpMarginWin->GetStatus() )
- {
- case SwPostItHelper::INSERTED: nResId = STR_REDLINE_INSERT; break;
- case SwPostItHelper::DELETED: nResId = STR_REDLINE_DELETE; break;
- default: nResId = 0;
- }
-
- SwContentAtPos aCntntAtPos( SwContentAtPos::SW_REDLINE );
- if ( nResId && mpMarginWin->DocView()->GetWrtShell().GetContentAtPos( mpMarginWin->GetAnkorRect().Pos(), aCntntAtPos ) )
- {
- String sTxt;
- sTxt = SW_RESSTR( nResId );
- sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM(": " ));
- sTxt += aCntntAtPos.aFnd.pRedl->GetAuthorString();
- sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " - " ));
- sTxt += GetAppLangDateTimeString( aCntntAtPos.aFnd.pRedl->GetTimeStamp() );
- Help::ShowQuickHelp( this,PixelToLogic(Rectangle(rEvt.GetMousePosPixel(),Size(50,10))),sTxt);
- }
-}
-
-void PostItTxt::Paint( const Rectangle& rRect)
-{
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- {
- if (mMouseOver || HasFocus())
- DrawGradient(Rectangle(Point(0,0),PixelToLogic(GetSizePixel())),
- Gradient(GRADIENT_LINEAR,mpMarginWin->ColorDark(),mpMarginWin->ColorDark()));
- else
- DrawGradient(Rectangle(Point(0,0),PixelToLogic(GetSizePixel())),
- Gradient(GRADIENT_LINEAR,mpMarginWin->ColorLight(),mpMarginWin->ColorDark()));
- }
-
- mpOutlinerView->Paint( rRect );
-
- if (mpMarginWin->GetStatus()==SwPostItHelper::DELETED)
- {
- SetLineColor(static_cast<SwPostIt*>(mpMarginWin)->GetChangeColor());
- DrawLine(PixelToLogic(GetPosPixel()),PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width(),GetSizePixel().Height())));
- DrawLine(PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width(),0)),PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height())));
- }
-}
-
-void PostItTxt::KeyInput( const KeyEvent& rKeyEvt )
-{
- const KeyCode& rKeyCode = rKeyEvt.GetKeyCode();
- USHORT nKey = rKeyCode.GetCode();
- SwView* pView = mpMarginWin->DocView();
- if ((rKeyCode.IsMod1() && rKeyCode.IsMod2()) && ((nKey == KEY_PAGEUP) || (nKey == KEY_PAGEDOWN)))
- mpMarginWin->SwitchToPostIt(nKey);
- else
- if ((nKey == KEY_ESCAPE) || (rKeyCode.IsMod1() && ((nKey == KEY_PAGEUP) || (nKey == KEY_PAGEDOWN))))
- mpMarginWin->SwitchToFieldPos();
- else
- if (nKey == KEY_INSERT)
- {
- if (!rKeyCode.IsMod1() && !rKeyCode.IsMod2())
- mpMarginWin->ToggleInsMode();
- }
- else
- {
- //let's make sure we see our note
- mpMarginWin->Mgr()->MakeVisible(mpMarginWin);
-
- long aOldHeight = mpMarginWin->GetPostItTextHeight();
- bool bDone = false;
-
- /// HACK: need to switch off processing of Undo/Redo in Outliner
- if ( !( (nKey == KEY_Z || nKey == KEY_Y) && rKeyCode.IsMod1()) )
- {
- /*
- SwPostItHelper::SwLayoutStatus aStatus = mpMarginWin->GetStatus();
- if ( (aStatus!=SwPostItHelper::DELETED) ||
- ( (aStatus==SwPostItHelper::DELETED) && (!mpMarginWin->Engine()->GetEditEngine().DoesKeyChangeText(rKeyEvt))) )
- */
- bool bIsProtected = mpMarginWin->IsProtected();
- if (!bIsProtected || (bIsProtected && !mpMarginWin->Engine()->GetEditEngine().DoesKeyChangeText(rKeyEvt)) )
- bDone = mpOutlinerView->PostKeyEvent( rKeyEvt );
- else
- InfoBox( this, SW_RES( MSG_READONLY_CONTENT )).Execute();
- }
- if (bDone)
- mpMarginWin->ResizeIfNeccessary(aOldHeight,mpMarginWin->GetPostItTextHeight());
- else
- {
- // write back data first when showing navigator
- if ( nKey==KEY_F5 )
- mpMarginWin->UpdateData();
- if (!pView->KeyInput(rKeyEvt))
- Window::KeyInput(rKeyEvt);
- }
- }
-
- pView->GetViewFrame()->GetBindings().InvalidateAll(FALSE);
-}
-
-void PostItTxt::MouseMove( const MouseEvent& rMEvt )
-{
- if ( mpOutlinerView )
- {
- mpOutlinerView->MouseMove( rMEvt );
- // mba: why does OutlinerView not handle the modifier setting?!
- // this forces the postit to handle *all* pointer types
- SetPointer( mpOutlinerView->GetPointer( rMEvt.GetPosPixel() ) );
-
- const EditView& aEV = mpOutlinerView->GetEditView();
- const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
- if ( pItem )
- {
- const SvxFieldData* pFld = pItem->GetField();
- const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
- if ( pURL )
- {
- String sURL( pURL->GetURL() );
- SvtSecurityOptions aSecOpts;
- if ( aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK) )
- {
- sURL.InsertAscii( ": ", 0 );
- sURL.Insert( ViewShell::GetShellRes()->aHyperlinkClick, 0 );
- }
- Help::ShowQuickHelp( this,PixelToLogic(Rectangle(GetPosPixel(),Size(50,10))),sURL);
- }
- }
- }
-}
-
-void PostItTxt::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if (mpOutlinerView )
- {
- SvtSecurityOptions aSecOpts;
- bool bExecuteMod = aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK);
-
- if ( !bExecuteMod || (bExecuteMod && rMEvt.GetModifier() == KEY_MOD1))
- {
- const EditView& aEV = mpOutlinerView->GetEditView();
- const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
- if ( pItem )
- {
- const SvxFieldData* pFld = pItem->GetField();
- const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
- if ( pURL )
- {
- mpOutlinerView->MouseButtonDown( rMEvt );
- SwWrtShell &rSh = mpMarginWin->DocView()->GetWrtShell();
- String sURL( pURL->GetURL() );
- String sTarget( pURL->GetTargetFrame() );
- ::LoadURL( sURL, &rSh, URLLOAD_NOFILTER, &sTarget);
- return;
- }
- }
- }
- }
-
- GrabFocus();
- if ( mpOutlinerView )
- mpOutlinerView->MouseButtonDown( rMEvt );
- mpMarginWin->DocView()->GetViewFrame()->GetBindings().InvalidateAll(FALSE);
-}
-
-void PostItTxt::MouseButtonUp( const MouseEvent& rMEvt )
-{
- if ( mpOutlinerView )
- mpOutlinerView->MouseButtonUp( rMEvt );
-}
-
-IMPL_LINK(PostItTxt, OnlineSpellCallback, SpellCallbackInfo*, pInfo)
-{
- if ( mpMarginWin && (pInfo->nCommand == SPELLCMD_STARTSPELLDLG) )
- mpMarginWin->DocView()->GetViewFrame()->GetDispatcher()->Execute( FN_SPELL_GRAMMAR_DIALOG, SFX_CALLMODE_ASYNCHRON);
- return 0;
-}
-
-IMPL_LINK( PostItTxt, Select, Menu*, pSelMenu )
-{
- mpMarginWin->ExecuteCommand( pSelMenu->GetCurItemId() );
- return 0;
-}
-
-void PostItTxt::Command( const CommandEvent& rCEvt )
-{
- if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
- {
- if (!mpMarginWin->IsProtected() &&
- //if (!mpMarginWin->IsReadOnly() && (mpMarginWin->GetStatus()!=SwPostItHelper::DELETED) &&
- mpOutlinerView->IsWrongSpelledWordAtPos( rCEvt.GetMousePosPixel(),TRUE ))
- {
- Link aLink = LINK(this, PostItTxt, OnlineSpellCallback);
- mpOutlinerView->ExecuteSpellPopup(rCEvt.GetMousePosPixel(),&aLink);
- }
- else
- {
- SfxPopupMenuManager* aMgr = mpMarginWin->DocView()->GetViewFrame()->GetDispatcher()->Popup(0, this,&rCEvt.GetMousePosPixel());
- XubString aText = ((PopupMenu*)aMgr->GetSVMenu())->GetItemText( FN_DELETE_NOTE_AUTHOR );
- SwRewriter aRewriter;
- aRewriter.AddRule(UNDO_ARG1, mpMarginWin->GetAuthor());
- aText = aRewriter.Apply(aText);
- ((PopupMenu*)aMgr->GetSVMenu())->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
- // SwPostItLinkForwarder_Impl aFwd( ((PopupMenu*)aMgr->GetSVMenu())->pSvMenu->GetSelectHdl(), mpPostIt );
- // ((PopupMenu*)aMgr->GetSVMenu())->pSvMenu->SetSelectHdl( LINK(&aFwd, SwPostItLinkForwarder_Impl, Select) );
-
- ((PopupMenu*)aMgr->GetSVMenu())->SetSelectHdl( LINK(this, PostItTxt, Select) );
-
- if (rCEvt.IsMouseEvent())
- ((PopupMenu*)aMgr->GetSVMenu())->Execute(this,rCEvt.GetMousePosPixel());
- else
- {
- const Size aSize = GetSizePixel();
- const Point aPos = Point( aSize.getWidth()/2, aSize.getHeight()/2 );
- ((PopupMenu*)aMgr->GetSVMenu())->Execute(this,aPos);
- }
- delete aMgr;
- }
- }
- else
- if (rCEvt.GetCommand() == COMMAND_WHEEL)
- {
- if (mpMarginWin->Scrollbar()->IsVisible())
- {
- const CommandWheelData* pData = rCEvt.GetWheelData();
- if (pData->IsShift() || pData->IsMod1() || pData->IsMod2())
- {
- mpMarginWin->DocView()->HandleWheelCommands(rCEvt);
- }
- else
- {
- HandleScrollCommand( rCEvt, 0 , mpMarginWin->Scrollbar());
-
- /*
- long nLines = pData->GetNotchDelta() * (long)pData->GetScrollLines();
- if ( ((mpMarginWin->Scrollbar()->GetRange().Min() == mpMarginWin->Scrollbar()->GetThumbPos()) && (nLines > 0)) ||
- ( (mpMarginWin->Scrollbar()->GetRange().Max() == mpMarginWin->Scrollbar()->GetThumbPos()+mpMarginWin->Scrollbar()->GetVisibleSize()) && (nLines < 0)) )
- {
- mpMarginWin->DocView()->HandleWheelCommands(rCEvt);
- }
- else
- {
- HandleScrollCommand( rCEvt, 0 , mpMarginWin->Scrollbar());
- }
- */
- }
- }
- else
- {
- mpMarginWin->DocView()->HandleWheelCommands(rCEvt);
- }
- }
- else
- {
- if ( mpOutlinerView )
- mpOutlinerView->Command( rCEvt );
- else
- Window::Command(rCEvt);
- }
-}
-
-void PostItTxt::DataChanged( const DataChangedEvent& aData)
-{
- Window::DataChanged( aData );
-}
-
-IMPL_LINK( PostItTxt, WindowEventListener, VclSimpleEvent*, pWinEvent )
-{
- if ( pWinEvent && pWinEvent->ISA( VclWindowEvent ) )
- {
- VclWindowEvent *pEvent = (VclWindowEvent*)pWinEvent;
- if (pEvent->GetId() == VCLEVENT_WINDOW_MOUSEMOVE)
- {
- MouseEvent* pMouseEvt = (MouseEvent*)pEvent->GetData();
- if ( pMouseEvt->IsEnterWindow() )
- {
- mMouseOver = true;
- if (!mbShowPopup && !HasFocus())
- {
- mpMarginWin->SetViewState(SS_VIEW);
- Invalidate();
- }
- }
- else if ( pMouseEvt->IsLeaveWindow())
- {
- if (mpMarginWin->IsPreview())
- {
- //mpMarginWin->doLazyDelete();
- }
- else
- {
- mMouseOver = false;
- if (!mbShowPopup && !HasFocus())
- {
- mpMarginWin->SetViewState(SS_NORMAL);
- Invalidate();
- }
- }
- }
- }
- }
- return sal_True;
-}
-
-XubString PostItTxt::GetSurroundingText() const
-{
- if( mpOutlinerView )
- return mpOutlinerView->GetSurroundingText();
- else
- return XubString::EmptyString();
-}
-
-Selection PostItTxt::GetSurroundingTextSelection() const
-{
- if( mpOutlinerView )
- return mpOutlinerView->GetSurroundingTextSelection();
- else
- return Selection( 0, 0 );
-}
-
-/************** SwMarginWin***********************************++*/
-SwMarginWin::SwMarginWin(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
-: Window(pParent, nBits),
- mnEventId(0),
- mpOutlinerView(0),
- mpOutliner(0),
- mpPostItTxt(0),
- mpMeta(0),
- mpVScrollbar(0),
- mpAnkor(0),
- mpShadow(0),
- mpMgr(aMgr),
- mbMeta(true),
- nFlags(aBits),
- mbMouseOverButton(false),
- mpButtonPopup(0),
- mbIsFollow(false)
-{
- SwEditWin* aWin = static_cast<SwEditWin*>(GetParent());
- mpView = &aWin->GetView();
-
- SdrPaintWindow* pPaintWindow = mpView->GetDrawView()->GetPaintWindow(0);
- if(pPaintWindow)
- {
- pOverlayManager = pPaintWindow->GetOverlayManager();
-
- mpShadow = new SwPostItShadow(basegfx::B2DPoint(0,0),basegfx::B2DPoint(0,0),Color(0,0,0),SS_NORMAL);
- mpShadow->setVisible(false);
- pOverlayManager->add(*mpShadow);
- }
-}
-
-SwMarginWin::~SwMarginWin()
-{
- if (mpOutlinerView)
- {
- delete mpOutlinerView;
- }
-
- if (mpOutliner)
- {
- delete mpOutliner;
- }
-
- if (mpMeta)
- {
- mpMeta->RemoveEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
- delete mpMeta;
- }
-
- if (mpPostItTxt)
- {
- delete mpPostItTxt;
- }
-
- if (mpVScrollbar)
- {
- delete mpVScrollbar;
- }
-
- if (mpAnkor)
- {
- if (mpAnkor->getOverlayManager())
- {
- // remove this object from the chain
- mpAnkor->getOverlayManager()->remove(*mpAnkor);
- }
- delete mpAnkor;
- }
-
- if (mpShadow)
- {
- if (mpShadow->getOverlayManager())
- {
- mpShadow->getOverlayManager()->remove(*mpShadow);
- }
- delete mpShadow;
- }
-
- if (mpButtonPopup)
- {
- delete mpButtonPopup;
- }
-
- if (mnEventId)
- Application::RemoveUserEvent( mnEventId );
-}
-
-void SwMarginWin::Paint( const Rectangle& rRect)
-{
- Window::Paint(rRect);
-
- if (mpMeta->IsVisible() )
- {
- //draw left over space
- if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- SetFillColor(COL_BLACK);
- else
- SetFillColor(mColorDark);
- SetLineColor();
- DrawRect(PixelToLogic(Rectangle(Point(mpMeta->GetPosPixel().X()+mpMeta->GetSizePixel().Width(),mpMeta->GetPosPixel().Y()),Size(GetMetaButtonAreaWidth(),mpMeta->GetSizePixel().Height()))));
-
- if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode())
- {
- //draw rect around button
- SetFillColor(COL_BLACK);
- SetLineColor(COL_WHITE);
- }
- else
- {
- //draw button
- Gradient aGradient;
- if (mbMouseOverButton)
- aGradient = Gradient(GRADIENT_LINEAR,ColorFromAlphaColor(80,mColorAnkor,mColorDark),ColorFromAlphaColor(15,mColorAnkor,mColorDark));
- else
- aGradient = Gradient(GRADIENT_LINEAR,ColorFromAlphaColor(15,mColorAnkor,mColorDark),ColorFromAlphaColor(80,mColorAnkor,mColorDark));
- DrawGradient(mRectMetaButton,aGradient);
- //draw rect around button
- SetFillColor();
- SetLineColor(ColorFromAlphaColor(90,mColorAnkor,mColorDark));
- }
- DrawRect(mRectMetaButton);
-
- if (IsPreview())
- {
- Font aOldFont( GetFont());
- Font aFont(aOldFont);
- Color aCol( COL_BLACK);
- aFont.SetColor( aCol );
- aFont.SetHeight(200);
- aFont.SetWeight(WEIGHT_MEDIUM);
- SetFont( aFont );
- DrawText(mRectMetaButton,rtl::OUString::createFromAscii("Edit Note"),TEXT_DRAW_CENTER);
- SetFont( aOldFont );
- }
- else
- {
- //draw arrow
- if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- SetFillColor(COL_WHITE);
- else
- SetFillColor(COL_BLACK);
- SetLineColor();
- DrawPolygon(Polygon(aPopupTriangle));
- }
- }
-}
-
-void SwMarginWin::SetPosSizePixelRect(long nX, long nY,long nWidth, long nHeight,const SwRect &aRect, const long aPageBorder)
-{
- mbMeta = true;
- mPosSize = Rectangle(Point(nX,nY),Size(nWidth,nHeight));
- mAnkorRect = aRect;
- mPageBorder = aPageBorder;
-}
-
-void SwMarginWin::SetSize( const Size& rNewSize )
-{
- mPosSize.SetSize(rNewSize);
-}
-
-void SwMarginWin::SetVirtualPosSize( const Point& aPoint, const Size& aSize)
-{
- mPosSize = Rectangle(aPoint,aSize);
-}
-
-void SwMarginWin::TranslateTopPosition(const long aAmount)
-{
- mPosSize.Move(0,aAmount);
-}
-
-void SwMarginWin::ShowAnkorOnly(const Point &aPoint)
-{
- HideNote();
- SetPosAndSize();
- if (mpAnkor)
- {
- mpAnkor->SetSixthPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
- mpAnkor->SetSeventhPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
- mpAnkor->SetAnkorState(AS_ALL);
- mpAnkor->setVisible(true);
- }
- if (mpShadow)
- mpShadow->setVisible(false);
-}
-
-SfxItemSet SwMarginWin::DefaultItem()
-{
- SfxItemSet aItem( mpView->GetDocShell()->GetPool() );
- aItem.Put(SvxFontHeightItem(200,100,EE_CHAR_FONTHEIGHT));
- aItem.Put(SvxFontItem(FAMILY_SWISS,GetSettings().GetStyleSettings().GetFieldFont().GetName(),
- EMPTYSTRING,PITCH_DONTKNOW,RTL_TEXTENCODING_DONTKNOW,EE_CHAR_FONTINFO));
- return aItem;
-}
-
-void SwMarginWin::InitControls()
-{
- // actual window which holds the user text
- mpPostItTxt = new PostItTxt(this, WB_NODIALOGCONTROL);
- mpPostItTxt->SetPointer(Pointer(POINTER_TEXT));
-
- // window control for author and date
- mpMeta = new MultiLineEdit(this,0);
- mpMeta->SetReadOnly();
- mpMeta->SetRightToLeft(Application::GetSettings().GetLayoutRTL());
- mpMeta->AlwaysDisableInput(true);
- mpMeta->SetCallHandlersOnInputDisabled(true);
- mpMeta->AddEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
- AddEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
-
- // we should leave this setting alone, but for this we need a better layout algo
- // with variable meta size height
- AllSettings aSettings = mpMeta->GetSettings();
- StyleSettings aStyleSettings = aSettings.GetStyleSettings();
- Font aFont = aStyleSettings.GetFieldFont();
- aFont.SetHeight(8);
- aStyleSettings.SetFieldFont(aFont);
- aSettings.SetStyleSettings(aStyleSettings);
- mpMeta->SetSettings(aSettings);
-
- SwDocShell* aShell = mpView->GetDocShell();
- mpOutliner = new Outliner(&aShell->GetPool(),OUTLINERMODE_TEXTOBJECT);
- aShell->GetDoc()->SetCalcFieldValueHdl( mpOutliner );
- // mpOutliner->EnableUndo( FALSE );
- mpOutliner->SetUpdateMode( TRUE );
- Rescale();
-
- OutputDevice* pDev = aShell->GetDoc()->getReferenceDevice(TRUE);
- if ( pDev )
- {
- mpOutliner->SetRefDevice( pDev );
- }
-
- mpOutlinerView = new OutlinerView ( mpOutliner, mpPostItTxt );
- mpOutlinerView->SetBackgroundColor(COL_TRANSPARENT);
- mpOutliner->InsertView(mpOutlinerView );
- mpPostItTxt->SetTextView(mpOutlinerView);
- mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,1,1) ) );
-
- mpOutlinerView->SetAttribs(DefaultItem());
-
- // TODO: ??
- EEHorizontalTextDirection aDefHoriTextDir = Application::GetSettings().GetLayoutRTL() ? EE_HTEXTDIR_R2L : EE_HTEXTDIR_L2R;
- mpOutliner->SetDefaultHorizontalTextDirection( aDefHoriTextDir );
-
- //create Scrollbars
- mpVScrollbar = new ScrollBar(this, WB_3DLOOK |WB_VSCROLL|WB_DRAG);
- mpVScrollbar->EnableNativeWidget(false);
- mpVScrollbar->EnableRTL( false );
- mpVScrollbar->SetScrollHdl(LINK(this, SwMarginWin, ScrollHdl));
- mpVScrollbar->EnableDrag();
- mpVScrollbar->AddEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
-
- const SwViewOption* pVOpt = mpView->GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = mpOutliner->GetControlWord();
- // TODO: crash when AUTOCOMPLETE enabled
- nCntrl |= EE_CNTRL_MARKFIELDS | EE_CNTRL_PASTESPECIAL | EE_CNTRL_AUTOCORRECT | EV_CNTRL_AUTOSCROLL | EE_CNTRL_URLSFXEXECUTE; // | EE_CNTRL_AUTOCOMPLETE;
- if (pVOpt->IsFieldShadings())
- nCntrl |= EE_CNTRL_MARKFIELDS;
- else
- nCntrl &= ~EE_CNTRL_MARKFIELDS;
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- mpOutliner->SetControlWord(nCntrl);
-
- sal_uInt16 aIndex = SW_MOD()->InsertRedlineAuthor(GetAuthor());
- SetColor(mpMgr->GetColorDark(aIndex),mpMgr->GetColorLight(aIndex),mpMgr->GetColorAnkor(aIndex));
-
- CheckMetaText();
- SetPopup();
- SetLanguage(GetLanguage());
- View()->StartSpeller();
- SetPostItText();
- Engine()->CompleteOnlineSpelling();
-
- mpMeta->Show();
- mpVScrollbar->Show();
- mpPostItTxt->Show();
-}
-
-void SwMarginWin::CheckMetaText()
-{
- const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
- String sMeta = GetAuthor();
- if (sMeta==String(EMPTYSTRING))
- sMeta = String(SW_RES(STR_NOAUTHOR));
- if (sMeta.Len() > 22)
- {
- sMeta.Erase(20);
- sMeta = sMeta + rtl::OUString::createFromAscii("...");
- }
- Date aDate = GetDate();
- if (aDate==Date())
- sMeta = sMeta + LINEBREAK + String(SW_RES(STR_POSTIT_TODAY));
- else
- if (aDate == Date(Date()-1))
- sMeta = sMeta + LINEBREAK + String(SW_RES(STR_POSTIT_YESTERDAY));
- else
- if (aDate.IsValid() )
- sMeta = sMeta + LINEBREAK + rLocalData.getDate(aDate);
- else
- sMeta = sMeta + LINEBREAK + String(SW_RES(STR_NODATE));
- if (GetTime()!=0)
- sMeta = sMeta + rtl::OUString::createFromAscii(" ") + rLocalData.getTime( GetTime(),false );
- if (mpMeta->GetText() != sMeta)
- mpMeta->SetText(sMeta);
-}
-
-void SwMarginWin::Rescale()
-{
- MapMode aMode = GetParent()->GetMapMode();
- aMode.SetOrigin( Point() );
- //aMode.SetScaleX( aMode.GetScaleX() * Fraction( 8, 10 ) );
- //aMode.SetScaleY( aMode.GetScaleY() * Fraction( 8, 10 ) );
- mpOutliner->SetRefMapMode( aMode );
- SetMapMode( aMode );
- mpPostItTxt->SetMapMode( aMode );
- if ( mpMeta )
- {
- Font aFont( mpMeta->GetSettings().GetStyleSettings().GetFieldFont() );
- sal_Int32 nHeight = aFont.GetHeight();
- nHeight = nHeight * aMode.GetScaleY().GetNumerator() / aMode.GetScaleY().GetDenominator();
- aFont.SetHeight( nHeight );
- mpMeta->SetControlFont( aFont );
- }
-}
-
-void SwMarginWin::SetPosAndSize()
-{
- bool bChange = false;
-
- if (GetSizePixel() != mPosSize.GetSize())
- {
- bChange = true;
- SetSizePixel(mPosSize.GetSize());
- DoResize();
- }
-
- if (GetPosPixel().X() != mPosSize.TopLeft().X() || (abs(GetPosPixel().Y() - mPosSize.TopLeft().Y()) > 5) )
- {
- bChange = true;
- SetPosPixel(mPosSize.TopLeft());
-
- Point aLineStart;
- Point aLineEnd ;
- if (mbMarginSide)
- {
- aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
- aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
- }
- else
- {
- aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
- aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
- }
-
- if (!IsPreview())
- {
- if (mpAnkor)
- {
- mpAnkor->SetAllPosition(basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom() - 5* 15),
- basegfx::B2DPoint( mAnkorRect.Left()-5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left()+5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left(), mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( mPageBorder ,mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
- basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()));
- mpAnkor->SetHeight(mAnkorRect.Height());
- }
- else
- {
- mpAnkor = new SwPostItAnkor(basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom()-5*15),
- basegfx::B2DPoint( mAnkorRect.Left()-5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left()+5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left(), mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( mPageBorder ,mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
- basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()) ,
- mColorAnkor,
- false,
- false);
- mpAnkor->SetHeight(mAnkorRect.Height());
- mpAnkor->setVisible(true);
- mpAnkor->SetAnkorState(AS_TRI);
- if (HasChildPathFocus())
- {
- mpAnkor->setLineSolid(true);
- }
- pOverlayManager->add(*mpAnkor);
- }
- }
- }
- else
- {
- if ( mpAnkor && (mpAnkor->getBasePosition() != basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom()-5*15)) )
- mpAnkor->SetTriPosition(basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom() - 5* 15),
- basegfx::B2DPoint( mAnkorRect.Left()-5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left()+5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left(), mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( mPageBorder ,mAnkorRect.Bottom()+2*15));
- }
-
- if (bChange)
- {
- Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
- Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
- mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
- }
-
- if (mpMgr->ShowNotes())
- {
- if (IsFollow() && !HasChildPathFocus())
- {
- mpAnkor->SetAnkorState(AS_END);
- }
- else
- {
- mpAnkor->SetAnkorState(AS_ALL);
- SwMarginWin* pWin = GetTopReplyNote();
- if (pWin)
- pWin->Ankor()->SetAnkorState(AS_END);
- }
- }
-}
-
-void SwMarginWin::DoResize()
-{
- long aTextHeight = LogicToPixel( mpOutliner->CalcTextSize()).Height();
- long aHeight = GetSizePixel().Height();
- unsigned long aWidth = GetSizePixel().Width();
-
- if (mbMeta)
- {
- aHeight -= GetMetaHeight();
- mpMeta->Show();
- mpPostItTxt->SetQuickHelpText(EMPTYSTRING);
- }
- else
- {
- mpMeta->Hide();
- mpPostItTxt->SetQuickHelpText(mpMeta->GetText());
- }
-
- if ((aTextHeight > aHeight) && !IsPreview())
- { // we need vertical scrollbars and have to reduce the width
- aWidth -= GetScrollbarWidth();
- mpVScrollbar->Show();
- }
- else
- {
- mpVScrollbar->Hide();
- }
-
- mpMeta->SetPosSizePixel(0,aHeight,GetSizePixel().Width()-GetMetaButtonAreaWidth(),GetMetaHeight());
- mpOutliner->SetPaperSize( PixelToLogic( Size(aWidth,aHeight) ) ) ;
- mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
- if (!mpVScrollbar->IsVisible())
- { // if we do not have a scrollbar anymore, we want to see the complete text
- mpOutlinerView->SetVisArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
- }
-
- if (!Application::GetSettings().GetLayoutRTL())
- {
- mpPostItTxt->SetPosSizePixel(0, 0, aWidth, aHeight);
- mpVScrollbar->SetPosSizePixel( aWidth, 0, GetScrollbarWidth(), aHeight);
- }
- else
- {
- mpPostItTxt->SetPosSizePixel((aTextHeight > aHeight) && !IsPreview() ? GetScrollbarWidth() : 0 , 0, aWidth, aHeight);
- mpVScrollbar->SetPosSizePixel( 0, 0, GetScrollbarWidth(), aHeight);
- }
-
- mpVScrollbar->SetVisibleSize( PixelToLogic(Size(0,aHeight)).Height() );
- mpVScrollbar->SetPageSize( PixelToLogic(Size(0,aHeight)).Height() * 8 / 10 );
- mpVScrollbar->SetLineSize( mpOutliner->GetTextHeight() / 10 );
- SetScrollbar();
- mpVScrollbar->SetRange( Range(0, mpOutliner->GetTextHeight()));
-
- //calculate rects for meta- button
- const Fraction& fx( GetMapMode().GetScaleX() );
- const Fraction& fy( GetMapMode().GetScaleY() );
-
- Point aPos( mpMeta->GetPosPixel());
- Point aBase( aPos.X() + aPos.X() + GetSizePixel().Width(), aPos.Y() );
- Point aLeft = PixelToLogic( Point( aBase.X() - (METABUTTON_WIDTH+5)*fx.GetNumerator()/fx.GetDenominator(), aBase.Y()+17*fy.GetNumerator()/fx.GetDenominator() ) );
- Point aRight = PixelToLogic( Point( aBase.X() - (METABUTTON_WIDTH-1)*fx.GetNumerator()/fx.GetDenominator(), aBase.Y()+17*fy.GetNumerator()/fy.GetDenominator() ) );
- Point aBottom = PixelToLogic( Point( aBase.X() - (METABUTTON_WIDTH+2)*fx.GetNumerator()/fx.GetDenominator(), aBase.Y()+20*fy.GetNumerator()/fy.GetDenominator() ) );
-
- aPopupTriangle.clear();
- aPopupTriangle.append(basegfx::B2DPoint(aLeft.X(),aLeft.Y()));
- aPopupTriangle.append(basegfx::B2DPoint(aRight.X(),aRight.Y()));
- aPopupTriangle.append(basegfx::B2DPoint(aBottom.X(),aBottom.Y()));
- aPopupTriangle.setClosed(true);
- if (IsPreview())
- mRectMetaButton = PixelToLogic( Rectangle( Point(
- aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH*4+10)*fx.GetNumerator()/fx.GetDenominator(),
- aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
- Size( METABUTTON_WIDTH*4*fx.GetNumerator()/fx.GetDenominator(), METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
- else
- mRectMetaButton = PixelToLogic( Rectangle( Point(
- aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH+10)*fx.GetNumerator()/fx.GetDenominator(),
- aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
- Size( METABUTTON_WIDTH*fx.GetNumerator()/fx.GetDenominator(), METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
-}
-
-void SwMarginWin::SetSizePixel( const Size& rNewSize )
-{
- Window::SetSizePixel(rNewSize);
-
- if (mpShadow)
- {
- Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
- Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
- mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
- }
-}
-
-void SwMarginWin::SetScrollbar()
-{
- mpVScrollbar->SetThumbPos( mpOutlinerView->GetVisArea().Top()+ mpOutlinerView->GetEditView().GetCursor()->GetOffsetY());
-}
-
-void SwMarginWin::ResizeIfNeccessary(long aOldHeight, long aNewHeight)
-{
- if (aOldHeight != aNewHeight)
- {
- //check for lower border or next note
- long aBorder = mpMgr->GetNextBorder();
- if (aBorder != -1)
- {
- if (aNewHeight > GetMinimumSizeWithoutMeta())
- {
- long aNewLowerValue = GetPosPixel().Y() + aNewHeight + GetMetaHeight();
- if (aNewLowerValue < aBorder)
- SetSizePixel(Size(GetSizePixel().Width(),aNewHeight+GetMetaHeight()));
- else
- SetSizePixel(Size(GetSizePixel().Width(),aBorder - GetPosPixel().Y()));
- DoResize();
- Invalidate();
- }
- else
- {
- if (GetSizePixel().Height() != GetMinimumSizeWithoutMeta() + GetMetaHeight())
- SetSizePixel(Size(GetSizePixel().Width(),GetMinimumSizeWithoutMeta() + GetMetaHeight()));
- DoResize();
- Invalidate();
- }
- }
- else
- {
- DoResize();
- Invalidate();
- }
- }
- else
- {
- SetScrollbar();
- }
-}
-
-void SwMarginWin::SetColor(Color aColorDark,Color aColorLight, Color aColorAnkor)
-{
- mColorDark = aColorDark;
- mColorLight = aColorLight;
- mColorAnkor = aColorAnkor;
-
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- {
- //Wallpaper aWall(Gradient(GRADIENT_LINEAR,mColorLight,mColorDark));
- //mpPostItTxt->SetBackground(aWall);
-
- mpMeta->SetControlBackground(mColorDark);
- AllSettings aSettings = mpMeta->GetSettings();
- StyleSettings aStyleSettings = aSettings.GetStyleSettings();
- aStyleSettings.SetFieldTextColor(aColorAnkor);
- aSettings.SetStyleSettings(aStyleSettings);
- mpMeta->SetSettings(aSettings);
-
- AllSettings aSettings2 = mpVScrollbar->GetSettings();
- StyleSettings aStyleSettings2 = aSettings2.GetStyleSettings();
- aStyleSettings2.SetButtonTextColor(Color(0,0,0));
- //aStyleSettings2.SetLightColor(mColorAnkor);
- aStyleSettings2.SetCheckedColor(mColorLight); //hintergund
- //aStyleSettings2.SetLightBorderColor(mColorAnkor);
- aStyleSettings2.SetShadowColor(mColorAnkor);
- aStyleSettings2.SetFaceColor(mColorDark);
- aSettings2.SetStyleSettings(aStyleSettings2);
- mpVScrollbar->SetSettings(aSettings2);
- }
-}
-
-void SwMarginWin::SetMarginSide(bool aMarginSide)
-{
- mbMarginSide = aMarginSide;
-}
-
-void SwMarginWin::SetReadonly(BOOL bSet)
-{
- mbReadonly = bSet;
- View()->SetReadOnly(bSet);
-}
-
-void SwMarginWin::SetLanguage(const SvxLanguageItem aNewItem)
-{
- Engine()->SetModifyHdl( Link() );
- ESelection aOld = View()->GetSelection();
-
- ESelection aNewSelection( 0, 0, (USHORT)Engine()->GetParagraphCount()-1, USHRT_MAX );
- View()->SetSelection( aNewSelection );
- SfxItemSet aEditAttr(View()->GetAttribs());
- aEditAttr.Put(aNewItem);
- View()->SetAttribs( aEditAttr );
-
- View()->SetSelection(aOld);
- Engine()->SetModifyHdl( LINK( this, SwPostIt, ModifyHdl ) );
-
- const SwViewOption* pVOpt = DocView()->GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = Engine()->GetControlWord();
- // turn off
- if (!pVOpt->IsOnlineSpell())
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- Engine()->SetControlWord(nCntrl);
-
- //turn back on
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- Engine()->SetControlWord(nCntrl);
-
- Engine()->CompleteOnlineSpelling();
- Invalidate();
-}
-
-void SwMarginWin::DataChanged( const DataChangedEvent& aEvent)
-{
- Window::DataChanged( aEvent );
-}
-
-void SwMarginWin::GetFocus()
-{
- if (mpPostItTxt)
- mpPostItTxt->GrabFocus();
-}
-
-void SwMarginWin::LoseFocus()
-{
-}
-
-void SwMarginWin::ShowNote()
-{
- SetPosAndSize();
- if (!IsVisible())
- Window::Show();
- if (mpAnkor && !mpShadow->isVisible())
- mpShadow->setVisible(true);
- if (mpAnkor && !mpAnkor->isVisible())
- mpAnkor->setVisible(true);
-}
-
-void SwMarginWin::HideNote()
-{
- if (IsVisible())
- Window::Hide();
- if (mpAnkor)
- {
- if (mpMgr->IsShowAnkor())
- mpAnkor->SetAnkorState(AS_TRI);
- else
- mpAnkor->setVisible(false);
- }
- if (mpShadow && mpShadow->isVisible())
- mpShadow->setVisible(false);
-}
-
-void SwMarginWin::ActivatePostIt()
-{
- mpMgr->AssureStdModeAtShell();
-
- mpOutliner->ClearModifyFlag();
- mpOutliner->GetUndoManager().Clear();
-
- CheckMetaText();
- SetViewState(SS_EDIT);
- View()->ShowCursor();
-
- mpOutlinerView->GetEditView().SetInsertMode(mpView->GetWrtShellPtr()->IsInsMode());
-
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- View()->SetBackgroundColor(mColorDark);
-
- // mpPostItTxt->SetBackground(Wallpaper(mColorDark));
-}
-
-void SwMarginWin::DeactivatePostIt()
-{
- // remove selection, #i87073#
- if (View()->GetEditView().HasSelection())
- {
- ESelection aSelection = View()->GetEditView().GetSelection();
- aSelection.nEndPara = aSelection.nStartPara;
- aSelection.nEndPos = aSelection.nStartPos;
- View()->GetEditView().SetSelection(aSelection);
- }
-
- mpOutliner->CompleteOnlineSpelling();
-
- SetViewState(SS_NORMAL);
- // write the visible text back into the SwField
- UpdateData();
-
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- View()->SetBackgroundColor(COL_TRANSPARENT);
-
- //mpPostItTxt->SetBackground(Gradient(GRADIENT_LINEAR,mColorLight,mColorDark));
-
- if ( !IsProtected() &&
- //if (!IsReadOnly() && (GetStatus()!=SwPostItHelper::DELETED) &&
- Engine()->GetEditEngine().GetText()==String(EMPTYSTRING) )
- mnEventId = Application::PostUserEvent( LINK( this, SwMarginWin, DeleteHdl), 0 );
-}
-
-void SwMarginWin::ToggleInsMode()
-{
- if (!mpView->GetWrtShell().IsRedlineOn())
- {
- //change outliner
- mpOutlinerView->GetEditView().SetInsertMode(!mpOutlinerView->GetEditView().IsInsertMode());
- //change documnet
- mpView->GetWrtShell().ToggleInsMode();
- //update statusbar
- SfxBindings &rBnd = mpView->GetViewFrame()->GetBindings();
- rBnd.Invalidate(SID_ATTR_INSERT);
- rBnd.Update(SID_ATTR_INSERT);
- }
-}
-
-void SwMarginWin::ExecuteCommand(USHORT nSlot)
-{
- mpMgr->AssureStdModeAtShell();
-
- switch (nSlot)
- {
- case FN_POSTIT:
- case FN_REPLY:
- {
- // if this note is empty, it will be deleted once losing the focus, so no reply, but only a new note
- // will be created
- SwView* pView = DocView();
- if (Engine()->GetEditEngine().GetText() != String(EMPTYSTRING))
- {
- OutlinerParaObject* pPara = new OutlinerParaObject(*View()->GetEditView().CreateTextObject());
- Mgr()->RegisterAnswer(pPara);
- }
- if (Mgr()->GetActivePostIt())
- Mgr()->SetActivePostIt(0);
- SwitchToFieldPos();
- pView->GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
- break;
- }
- case FN_DELETE_COMMENT:
- case FN_DELETE_NOTE:
-
- //Delete(); // do not kill the parent of our open popup menu
- mnEventId = Application::PostUserEvent( LINK( this, SwMarginWin, DeleteHdl), 0 );
- break;
- /*
- case FN_HIDE_NOTE:
- if ( Mgr()->GetActivePostIt() == this )
- {
- Mgr()->SetActivePostIt(0);
- // put the cursor back into the document
- SwitchToFieldPos();
- }
- Mgr()->Hide(mpFld);
- break;
- */
- case FN_DELETE_ALL_NOTES:
- case FN_HIDE_ALL_NOTES:
- // not possible as slot as this would require that "this" is the active postit
- DocView()->GetViewFrame()->GetBindings().Execute( nSlot, 0, 0, SFX_CALLMODE_ASYNCHRON );
- break;
- case FN_DELETE_NOTE_AUTHOR:
- case FN_HIDE_NOTE_AUTHOR:
- {
- // not possible as slot as this would require that "this" is the active postit
- SfxStringItem aItem( nSlot, GetAuthor() );
- const SfxPoolItem* aItems[2];
- aItems[0] = &aItem;
- aItems[1] = 0;
- DocView()->GetViewFrame()->GetBindings().Execute( nSlot, aItems, 0, SFX_CALLMODE_ASYNCHRON );
- }
- default:
- mpView->GetViewFrame()->GetBindings().Execute( nSlot );
- break;
- }
-}
-
-bool SwMarginWin::CalcFollow()
-{
- return false;
-}
-
-SwEditWin* SwMarginWin::EditWin()
-{
- return &mpView->GetEditWin();
-}
-
-String SwPostIt::GetAuthor()
-{
- return mpFld->GetPar1();
-}
-
-Date SwPostIt::GetDate()
-{
- return mpFld->GetDate();
-}
-
-Time SwPostIt::GetTime()
-{
- return mpFld->GetTime();
-}
-
-long SwMarginWin::GetPostItTextHeight()
-{
- return mpOutliner ? LogicToPixel(mpOutliner->CalcTextSize()).Height() : 0;
-}
-
-void SwMarginWin::SwitchToPostIt(USHORT aDirection)
-{
- if (mpMgr)
- {
- SwMarginWin* pPostIt = mpMgr->GetNextPostIt(aDirection, this);
- if (pPostIt)
- pPostIt->GrabFocus();
- }
-}
-
-void SwMarginWin::MouseButtonDown( const MouseEvent& /*rMEvt */)
-{
-}
-
-void SwMarginWin::MouseMove( const MouseEvent& rMEvt )
-{
- if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())))
- {
- if (!mbMouseOverButton)
- {
- Invalidate(mRectMetaButton);
- mbMouseOverButton = true;
- }
- }
- else
- {
- if (mbMouseOverButton)
- {
- Invalidate(mRectMetaButton);
- mbMouseOverButton = false;
- }
- }
-}
-
-void SwMarginWin::Delete()
-{
- if ( Mgr()->GetActivePostIt() == this)
- {
- Mgr()->SetActivePostIt(0);
- // if the note is empty, the previous line will send a delete event, but we are already there
- if (mnEventId)
- {
- Application::RemoveUserEvent( mnEventId );
- mnEventId = 0;
- }
- }
-}
-
-IMPL_LINK(SwMarginWin, ScrollHdl, ScrollBar*, pScroll)
-{
- long nDiff = View()->GetEditView().GetVisArea().Top() - pScroll->GetThumbPos();
- View()->Scroll( 0, nDiff );
- return 0;
-}
-
-IMPL_LINK(SwMarginWin, ModifyHdl, void*, pVoid)
-{
- // no warnings, please
- pVoid=0;
- DocView()->GetDocShell()->SetModified(sal_True);
- return 0;
-}
-
-IMPL_LINK(SwMarginWin, DeleteHdl, void*, pVoid)
-{
- // no warnings, please
- pVoid=0;
- mnEventId = 0;
- Delete();
- return 0;
-}
-
-
-void SwMarginWin::ResetAttributes()
-{
- mpOutlinerView->RemoveAttribsKeepLanguages(TRUE);
- mpOutliner->RemoveFields(TRUE);
- mpOutlinerView->SetAttribs(DefaultItem());
-}
-
-sal_Int32 SwMarginWin::GetScrollbarWidth()
-{
- return mpView->GetWrtShell().GetViewOptions()->GetZoom() / 10;
-}
-
-sal_Int32 SwMarginWin::GetMetaButtonAreaWidth()
-{
- const Fraction& f( GetMapMode().GetScaleX() );
- if (IsPreview())
- return 3 * METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
- else
- return METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
-}
-
-sal_Int32 SwMarginWin::GetMetaHeight()
-{
- const Fraction& f( GetMapMode().GetScaleY() );
- return POSTIT_META_HEIGHT * f.GetNumerator() / f.GetDenominator();
-}
-
-sal_Int32 SwMarginWin::GetMinimumSizeWithMeta()
-{
- return mpMgr->GetMinimumSizeWithMeta();
-}
-
-sal_Int32 SwMarginWin::GetMinimumSizeWithoutMeta()
-{
- const Fraction& f( GetMapMode().GetScaleY() );
- return POSTIT_MINIMUMSIZE_WITHOUT_META * f.GetNumerator() / f.GetDenominator();
-}
-
-void SwMarginWin::SetSpellChecking()
-{
- const SwViewOption* pVOpt = mpView->GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = mpOutliner->GetControlWord();
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- mpOutliner->SetControlWord(nCntrl);
-
- mpOutliner->CompleteOnlineSpelling();
- Invalidate();
-}
-
-void SwMarginWin::SetViewState(ShadowState bState)
-{
- switch (bState)
- {
- case SS_EDIT:
- {
- if (mpAnkor)
- {
- mpAnkor->SetAnkorState(AS_ALL);
- SwMarginWin* pWin = GetTopReplyNote();
- if (pWin)
- pWin->Ankor()->SetAnkorState(AS_END);
- mpAnkor->setLineSolid(true);
- }
- if (mpShadow)
- mpShadow->SetShadowState(bState);
- break;
- }
- case SS_VIEW:
- {
- if (mpAnkor)
- mpAnkor->setLineSolid(true);
- if (mpShadow)
- mpShadow->SetShadowState(bState);
- break;
- }
- case SS_NORMAL:
- {
- if (mpAnkor)
- {
- if (IsFollow())
- {
- // if there is no visible parent note, we want to see the complete anchor ??
- //if (IsAnyStackParentVisible())
- mpAnkor->SetAnkorState(AS_END);
- SwMarginWin* pTopWinSelf = GetTopReplyNote();
- SwMarginWin* pTopWinActive = mpMgr->GetActivePostIt() ? mpMgr->GetActivePostIt()->GetTopReplyNote() : 0;
- if (pTopWinSelf && (pTopWinSelf!=pTopWinActive))
- {
- if (pTopWinSelf!=mpMgr->GetActivePostIt())
- pTopWinSelf->Ankor()->setLineSolid(false);
- pTopWinSelf->Ankor()->SetAnkorState(AS_ALL);
- }
- }
- mpAnkor->setLineSolid(false);
- }
- if (mpShadow)
- mpShadow->SetShadowState(bState);
- break;
- }
- }
-}
-
-bool SwMarginWin::IsAnyStackParentVisible()
-{
- SwMarginWin* pMarginWin = mpMgr->GetNextPostIt(KEY_PAGEUP, this);
- while (pMarginWin)
- {
- if (pMarginWin->IsFollow())
- {
- pMarginWin = mpMgr->GetNextPostIt(KEY_PAGEUP, pMarginWin);
- if (pMarginWin && pMarginWin->IsVisible())
- return true;
- }
- else
- return pMarginWin && pMarginWin->IsVisible() ? true : false;
- }
- return false;
-}
-
-SwMarginWin* SwMarginWin::GetTopReplyNote()
-{
- SwMarginWin* pTopNote = 0;
- SwMarginWin* pMarginWin = IsFollow() ? mpMgr->GetNextPostIt(KEY_PAGEUP, this) : 0;
- while (pMarginWin)
- {
- pTopNote = pMarginWin;
- pMarginWin = pMarginWin->IsFollow() ? mpMgr->GetNextPostIt(KEY_PAGEUP, pMarginWin) : 0;
- }
- return pTopNote;
-}
-
-void SwMarginWin::SwitchToFieldPos()
-{
- if ( Mgr()->GetActivePostIt() == this )
- Mgr()->SetActivePostIt(0);
- GotoPos();
- sal_uInt32 aCount = MoveCaret();
- if (aCount)
- DocView()->GetDocShell()->GetWrtShell()->SwCrsrShell::Right(aCount, 0, FALSE);
- GrabFocusToDocument();
-}
-
-String SwMarginWin::GetAuthor()
-{
- return String(EMPTYSTRING);
-}
-
-Date SwMarginWin::GetDate()
-{
- return Date(0);
-}
-
-Time SwMarginWin::GetTime()
-{
- return Time(0);
-}
-
-SvxLanguageItem SwMarginWin::GetLanguage(void)
-{
- return SvxLanguageItem(SwLangHelper::GetLanguage(DocView()->GetWrtShell(),RES_CHRATR_LANGUAGE),RES_CHRATR_LANGUAGE);
-}
-
-/***** SwPostIt *********************************************/
-SwPostIt::SwPostIt( Window* pParent, WinBits nBits, SwFmtFld* aField,SwPostItMgr* aMgr,SwPostItBits aBits)
- : SwMarginWin(pParent,nBits,aMgr,aBits),
- mpFmtFld(aField),
- mpFld( static_cast<SwPostItField*>(aField->GetFld())),
- mStatus(SwPostItHelper::INVISIBLE)
-{
-}
-
-void SwPostIt::SetPostItText()
-{
- // get text from SwPostItField and insert into our textview
- Engine()->SetModifyHdl( Link() );
- Engine()->EnableUndo( FALSE );
- mpFld = static_cast<SwPostItField*>(mpFmtFld->GetFld());
- if( mpFld->GetTextObject() )
- Engine()->SetText( *mpFld->GetTextObject() );
- else
- {
- Engine()->Clear();
- View()->SetAttribs(DefaultItem());
- View()->InsertText(mpFld->GetPar2(),false);
- }
-
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
- Engine()->EnableUndo( TRUE );
- Engine()->SetModifyHdl( LINK( this, SwPostIt, ModifyHdl ) );
- Invalidate();
-}
-
-void SwPostIt::UpdateData()
-{
- if ( Engine()->IsModified() )
- {
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwField* pOldField = mpFld->Copy();
- mpFld->SetPar2(Engine()->GetEditEngine().GetText());
- mpFld->SetTextObject(Engine()->CreateParaObject());
- DocView()->GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
- delete pOldField;
- // so we get a new layout of notes (anchor position is still the same and we would otherwise not get one)
- Mgr()->SetLayout();
- // #i98686# if we have several views, all notes should update their text
- mpFmtFld->Broadcast(SwFmtFldHint( 0, SWFMTFLD_CHANGED));
- DocView()->GetDocShell()->SetModified();
- }
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
-}
-
-void SwPostIt::SetChangeTracking(SwPostItHelper::SwLayoutStatus& aStatus,Color aColor)
-{
- if ( (mStatus != aStatus) || (mChangeColor != aColor) )
- {
- mStatus = aStatus;
- mChangeColor = aColor;
- Invalidate();
- }
-}
-
-void SwPostIt::Delete()
-{
- SwMarginWin::Delete();
- // we delete the field directly, the Mgr cleans up the PostIt by listening
- DocView()->GetWrtShellPtr()->GotoField(*mpFmtFld);
- GrabFocusToDocument();
- DocView()->GetWrtShellPtr()->DelRight();
-}
-
-void SwPostIt::GotoPos()
-{
- DocView()->GetDocShell()->GetWrtShell()->GotoField(*mpFmtFld);
-}
-
-sal_uInt32 SwPostIt::MoveCaret()
-{
- // if this is an answer, do not skip over all following ones, but insert directly behind the current one
- // but when just leaving a note, skip all following ones as well to continue typing
- return Mgr()->IsAnswer() ? 1 : 1 + CountFollowing();
-}
-
-//returns true, if there is another note right before this note
-bool SwPostIt::CalcFollow()
-{
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwTxtAttr * const pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
- aPosition.nContent.GetIndex() - 1, RES_TXTATR_FIELD );
- const SwField* pFld = pTxtAttr ? pTxtAttr->GetFld().GetFld() : 0;
- return pFld && (pFld->Which()== RES_POSTITFLD);
-}
-
-// counts how many SwPostItField we have right after the current one
-sal_uInt32 SwPostIt::CountFollowing()
-{
- sal_uInt32 aCount = 1; // we start with 1, so we have to subtract one at the end again
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
-
- SwTxtAttr * pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
- aPosition.nContent.GetIndex() + 1, RES_TXTATR_FIELD );
- SwField* pFld = pTxtAttr ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld()) : 0;
- while (pFld && (pFld->Which()== RES_POSTITFLD))
- {
- aCount++;
- pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
- aPosition.nContent.GetIndex() + aCount, RES_TXTATR_FIELD );
- pFld = pTxtAttr ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld()) : 0;
- }
- return aCount - 1;
-}
-
-void SwPostIt::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())) && rMEvt.IsLeft())
- {
- if (IsPreview())
- {
- doLazyDelete();
- if (Mgr())
- {
- SwPostIt* pPostIt = dynamic_cast<SwPostIt*>(Mgr()->GetPostIt(mpFmtFld));
- if (pPostIt)
- {
- pPostIt->GrabFocus();
- Mgr()->MakeVisible(pPostIt);
- }
- }
-
- }
- else
- {
- if ( mbReadonly )
- {
- mpButtonPopup->EnableItem(FN_REPLY,false);
- mpButtonPopup->EnableItem(FN_DELETE_NOTE,false);
- mpButtonPopup->EnableItem(FN_DELETE_NOTE_AUTHOR,false);
- mpButtonPopup->EnableItem(FN_DELETE_ALL_NOTES,false);
- }
- else
- {
- if (IsProtected())
- mpButtonPopup->EnableItem(FN_DELETE_NOTE,false);
- else
- mpButtonPopup->EnableItem(FN_DELETE_NOTE,true);
- mpButtonPopup->EnableItem(FN_DELETE_NOTE_AUTHOR,true);
- mpButtonPopup->EnableItem(FN_DELETE_ALL_NOTES,true);
- }
- SvtUserOptions aUserOpt;
- String sAuthor;
- if( !(sAuthor = aUserOpt.GetFullName()).Len())
- if( !(sAuthor = aUserOpt.GetID()).Len() )
- sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
- // do not allow to reply to ourself and no answer possible if this note is in a protected section
- if ((sAuthor == GetAuthor()) || (IsProtected()))
- mpButtonPopup->EnableItem(FN_REPLY,false);
- else
- mpButtonPopup->EnableItem(FN_REPLY,true);
-
- // show the popup menu and execute the selected command
- ExecuteCommand( mpButtonPopup->Execute( this,Rectangle(LogicToPixel(mRectMetaButton.BottomLeft()),LogicToPixel(mRectMetaButton.BottomLeft())),POPUPMENU_EXECUTE_DOWN | POPUPMENU_NOMOUSEUPCLOSE) );
- }
- }
-}
-
-void SwPostIt::SetPopup()
-{
- mpButtonPopup = new PopupMenu(SW_RES(MN_ANNOTATION_BUTTON));
- //mpButtonPopup->SetMenuFlags(MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES);
- XubString aText = mpButtonPopup->GetItemText( FN_DELETE_NOTE_AUTHOR );
- SwRewriter aRewriter;
- aRewriter.AddRule(UNDO_ARG1,GetAuthor());
- aText = aRewriter.Apply(aText);
- mpButtonPopup->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
-}
-
-void SwPostIt::InitAnswer(OutlinerParaObject* pText)
-{
- //collect our old meta data
- SwMarginWin* pWin = Mgr()->GetNextPostIt(KEY_PAGEUP, this);
- const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
- String aText = String(SW_RES(STR_REPLY));
- SwRewriter aRewriter;
- aRewriter.AddRule(UNDO_ARG1, pWin->GetAuthor());
- aText = aRewriter.Apply(aText);
- aText.Append(String(rtl::OUString::createFromAscii(" (") +
- String(rLocalData.getDate( pWin->GetDate())) + rtl::OUString::createFromAscii(", ") +
- String(rLocalData.getTime( pWin->GetTime(),false)) + rtl::OUString::createFromAscii("): \"")));
- View()->InsertText(aText,false);
-
- // insert old, selected text or "..."
- // TOOD: iterate over all paragraphs, not only first one to find out if it is empty
- if (pText->GetTextObject().GetText(0) != String(EMPTYSTRING))
- View()->GetEditView().InsertText(pText->GetTextObject());
- else
- View()->InsertText(rtl::OUString::createFromAscii("..."),false);
- View()->InsertText(rtl::OUString::createFromAscii("\"\n"),false);
-
- View()->SetSelection(ESelection(0x0,0x0,0xFFFF,0xFFFF));
- SfxItemSet aAnswerSet( DocView()->GetDocShell()->GetPool() );
- aAnswerSet.Put(SvxFontHeightItem(200,80,EE_CHAR_FONTHEIGHT));
- aAnswerSet.Put(SvxPostureItem(ITALIC_NORMAL,EE_CHAR_ITALIC));
- View()->SetAttribs(aAnswerSet);
- View()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
-
- //remove all attributes and reset our standard ones
- View()->GetEditView().RemoveAttribsKeepLanguages(true);
- View()->SetAttribs(DefaultItem());
- // lets insert an undo step so the initial text can be easily deleted
- // but do not use UpdateData() directly, would set modified state again and reentrance into Mgr
- Engine()->SetModifyHdl( Link() );
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwField* pOldField = mpFld->Copy();
- mpFld->SetPar2(Engine()->GetEditEngine().GetText());
- mpFld->SetTextObject(Engine()->CreateParaObject());
- DocView()->GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
- delete pOldField;
- Engine()->SetModifyHdl( LINK( this, SwPostIt, ModifyHdl ) );
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
-}
-
-SvxLanguageItem SwPostIt::GetLanguage(void)
-{
- // set initial language for outliner
- USHORT nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( mpFld->GetLanguage() );
- USHORT nLangWhichId = 0;
- switch (nScriptType)
- {
- case SCRIPTTYPE_LATIN : nLangWhichId = EE_CHAR_LANGUAGE ; break;
- case SCRIPTTYPE_ASIAN : nLangWhichId = EE_CHAR_LANGUAGE_CJK; break;
- case SCRIPTTYPE_COMPLEX : nLangWhichId = EE_CHAR_LANGUAGE_CTL; break;
- default: DBG_ERROR("GetLanguage: wrong script tye");
- }
- return SvxLanguageItem(mpFld->GetLanguage(),nLangWhichId);
-}
-
-bool SwPostIt::IsProtected()
-{
- bool aReturn;
- aReturn = mpFmtFld ? (SwMarginWin::IsProtected() || (mStatus==SwPostItHelper::DELETED) ||
- mpFmtFld->IsProtect()) : (SwMarginWin::IsProtected() || (mStatus==SwPostItHelper::DELETED));
- return aReturn;
-}
-
-/********** SwRedComment**************/
-/*
-SwRedComment::SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed)
- : SwMarginWin(pParent,nBits,aMgr,aBits),
- pRedline(pRed)
-{
-}
-
-void SwRedComment::SetPopup()
-{
- mpButtonPopup = new PopupMenu(SW_RES(MN_REDCOMMENT_BUTTON));
- //mpButtonPopup->SetMenuFlags(MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES);
-}
-
-void SwRedComment::UpdateData()
-{
- if ( Engine()->IsModified() )
- {
- // so we get a new layout of notes (ankor position is still the same and we would otherwise not get one)
- Mgr()->SetLayout();
- // SetRedline is calling SetModified already
- DocView()->GetWrtShell().SetRedlineComment(Engine()->GetEditEngine().GetText());
- }
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
-}
-
-void SwRedComment::SetPostItText()
-{
- Engine()->SetModifyHdl( Link() );
- Engine()->EnableUndo( FALSE );
-
- Engine()->Clear();
- View()->SetAttribs(DefaultItem());
- View()->InsertText(pRedline->GetComment(),false);
-
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
- Engine()->EnableUndo( TRUE );
- Engine()->SetModifyHdl( LINK( this, SwMarginWin, ModifyHdl ) );
- Invalidate();
-}
-
-void SwRedComment::DeactivatePostIt()
-{
- SwMarginWin::DeactivatePostIt();
- // current Redline is still selected
- DocView()->GetWrtShellPtr()->ClearMark();
-}
-
-void SwRedComment::ActivatePostIt()
-{
- SwMarginWin::ActivatePostIt();
-
- // do we want the redline selected?
- // otherwise, SwRedComment::ActivatePostIt() as well as SwRedComment::DeactivatePostIt()
- // can be thrown out completly
- DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
- DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()),true);
-}
-
-void SwRedComment::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())) && rMEvt.IsLeft())
- {
- ExecuteCommand( mpButtonPopup->Execute( this,Rectangle(LogicToPixel(mRectMetaButton.BottomLeft()),LogicToPixel(mRectMetaButton.BottomLeft())),POPUPMENU_EXECUTE_DOWN | POPUPMENU_NOMOUSEUPCLOSE) );
- }
-}
-
-void SwRedComment::Delete()
-{
- SwMarginWin::Delete();
- // we are not neccessarily on our redline, so let's move there
- GotoPos();
- DocView()->GetWrtShell().SetRedlineComment(EMPTYSTRING);
- DocView()->GetWrtShell().ClearMark();
- // so we get a new layout of notes (ankor position is still the same and we would otherwise not get one)
- Mgr()->SetLayout();
- Mgr()->RemoveItem(pRedline);
-}
-
-void SwRedComment::GotoPos()
-{
- DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
- DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()));
-}
-
-String SwRedComment::GetAuthor()
-{
- return pRedline->GetAuthorString();
-}
-
-Date SwRedComment::GetDate()
-{
- return pRedline->GetTimeStamp().GetDate();
-}
-
-Time SwRedComment::GetTime()
-{
- return pRedline->GetTimeStamp().GetTime();
-}
-
-bool SwRedComment::IsProtected()
-{
- return SwMarginWin::IsProtected() || pRedline->Start()->nNode.GetNode().GetTxtNode()->IsInProtectSect();
-}
-*/
-
-//////////////////////////////////////////////////////////////////////////////
-// helper SwPostItShadowPrimitive
-//
-// Used to allow view-dependent primitive definition. For that purpose, the
-// initially created primitive (this one) always has to be view-independent,
-// but the decomposition is made view-dependent. Very simple primitive which
-// just remembers the discrete data and applies it at decomposition time.
-
-class SwPostItShadowPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
-{
-private:
- basegfx::B2DPoint maBasePosition;
- basegfx::B2DPoint maSecondPosition;
- ShadowState maShadowState;
-
-protected:
- virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
-
-public:
- SwPostItShadowPrimitive(
- const basegfx::B2DPoint& rBasePosition,
- const basegfx::B2DPoint& rSecondPosition,
- ShadowState aShadowState)
- : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
- maBasePosition(rBasePosition),
- maSecondPosition(rSecondPosition),
- maShadowState(aShadowState)
- {}
-
- // data access
- const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
- const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
- ShadowState getShadowState() const { return maShadowState; }
-
- virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
-
- DeclPrimitrive2DIDBlock()
-};
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItShadowPrimitive::create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
-{
- // get logic sizes in object coordinate system
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
- basegfx::B2DRange aRange(getBasePosition());
-
- switch(maShadowState)
- {
- case SS_NORMAL:
- {
- aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (2.0 * getDiscreteUnit())));
- const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
- drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
- 0.0,
- 0.5,
- 0.5,
- 1800.0 * F_PI1800,
- basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
- basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
- 2);
-
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aFillGradientAttribute));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- break;
- }
- case SS_VIEW:
- {
- aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
- const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
- drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
- 0.0,
- 0.5,
- 0.5,
- 1800.0 * F_PI1800,
- basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
- basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
- 4);
-
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aFillGradientAttribute));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- break;
- }
- case SS_EDIT:
- {
- aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
- const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
- drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
- 0.0,
- 0.5,
- 0.5,
- 1800.0 * F_PI1800,
- basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
- basegfx::BColor(83.0/255.0,83.0/255.0,83.0/255.0),
- 4);
-
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aFillGradientAttribute));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- break;
- }
- default:
- {
- break;
- }
- }
-
- return xRetval;
-}
-
-bool SwPostItShadowPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
-{
- if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
- {
- const SwPostItShadowPrimitive& rCompare = static_cast< const SwPostItShadowPrimitive& >(rPrimitive);
-
- return (getBasePosition() == rCompare.getBasePosition()
- && getSecondPosition() == rCompare.getSecondPosition()
- && getShadowState() == rCompare.getShadowState());
- }
-
- return false;
-}
-
-ImplPrimitrive2DIDBlock(SwPostItShadowPrimitive, PRIMITIVE2D_ID_SWPOSTITSHADOWPRIMITIVE)
-
-/****** SwPostItShadow ***********************************************************/
-SwPostItShadow::SwPostItShadow(const basegfx::B2DPoint& rBasePos,const basegfx::B2DPoint& rSecondPosition,
- Color aBaseColor,ShadowState aState)
- : OverlayObjectWithBasePosition(rBasePos, aBaseColor),
- maSecondPosition(rSecondPosition),
- mShadowState(aState)
-{
-// mbAllowsAnimation = false;
-}
-
-SwPostItShadow::~SwPostItShadow()
-{
-}
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItShadow::createOverlayObjectPrimitive2DSequence()
-{
- const drawinglayer::primitive2d::Primitive2DReference aReference(
- new SwPostItShadowPrimitive(
- getBasePosition(),
- GetSecondPosition(),
- GetShadowState()));
- return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
-}
-
-void SwPostItShadow::SetShadowState(ShadowState aState)
-{
- if (mShadowState != aState)
- {
- mShadowState = aState;
-
- objectChange();
- }
-}
-
-void SwPostItShadow::SetPosition(const basegfx::B2DPoint& rPoint1,
- const basegfx::B2DPoint& rPoint2)
-{
- if(!rPoint1.equal(getBasePosition()) || !rPoint2.equal(GetSecondPosition()))
- {
- maBasePosition = rPoint1;
- maSecondPosition = rPoint2;
-
- objectChange();
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// helper class: Primitive for discrete visualisation
-
-class SwPostItAnkorPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
-{
-private:
- basegfx::B2DPolygon maTriangle;
- basegfx::B2DPolygon maLine;
- basegfx::B2DPolygon maLineTop;
- AnkorState maAnkorState;
- basegfx::BColor maColor;
-
- // discrete line width
- double mfLogicLineWidth;
-
- // bitfield
- bool mbShadow : 1;
- bool mbLineSolid : 1;
-
-protected:
- virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
-
-public:
- SwPostItAnkorPrimitive(
- const basegfx::B2DPolygon& rTriangle,
- const basegfx::B2DPolygon& rLine,
- const basegfx::B2DPolygon& rLineTop,
- AnkorState aAnkorState,
- const basegfx::BColor& rColor,
- double fLogicLineWidth,
- bool bShadow,
- bool bLineSolid)
- : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
- maTriangle(rTriangle),
- maLine(rLine),
- maLineTop(rLineTop),
- maAnkorState(aAnkorState),
- maColor(rColor),
- mfLogicLineWidth(fLogicLineWidth),
- mbShadow(bShadow),
- mbLineSolid(bLineSolid)
- {}
-
- // data access
- const basegfx::B2DPolygon& getTriangle() const { return maTriangle; }
- const basegfx::B2DPolygon& getLine() const { return maLine; }
- const basegfx::B2DPolygon& getLineTop() const { return maLineTop; }
- AnkorState getAnkorState() const { return maAnkorState; }
- const basegfx::BColor& getColor() const { return maColor; }
- double getLogicLineWidth() const { return mfLogicLineWidth; }
- bool getShadow() const { return mbShadow; }
- bool getLineSolid() const { return mbLineSolid; }
-
- virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
-
- DeclPrimitrive2DIDBlock()
-};
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItAnkorPrimitive::create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
-{
- drawinglayer::primitive2d::Primitive2DSequence aRetval;
-
- if(AS_TRI == getAnkorState() || AS_ALL == getAnkorState() || AS_START == getAnkorState())
- {
- // create triangle
- const drawinglayer::primitive2d::Primitive2DReference aTriangle(
- new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(getTriangle()),
- getColor()));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aTriangle);
- }
-
- if(AS_ALL == getAnkorState() || AS_START == getAnkorState())
- {
- // create line start
- const drawinglayer::attribute::LineAttribute aLineAttribute(
- getColor(),
- getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
-
- if(getLineSolid())
- {
- const drawinglayer::primitive2d::Primitive2DReference aSolidLine(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- getLine(),
- aLineAttribute));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aSolidLine);
- }
- else
- {
- ::std::vector< double > aDotDashArray;
- const double fDistance(3.0 * 15.0);
- const double fDashLen(5.0 * 15.0);
-
- aDotDashArray.push_back(fDashLen);
- aDotDashArray.push_back(fDistance);
-
- const drawinglayer::attribute::StrokeAttribute aStrokeAttribute(
- aDotDashArray,
- fDistance + fDashLen);
-
- const drawinglayer::primitive2d::Primitive2DReference aStrokedLine(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- getLine(),
- aLineAttribute,
- aStrokeAttribute));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aStrokedLine);
- }
- }
-
- if(aRetval.hasElements() && getShadow())
- {
- // shadow is only for triangle and line start, and in upper left
- // and lower right direction, in different colors
- const double fColorChange(20.0 / 255.0);
- const basegfx::B3DTuple aColorChange(fColorChange, fColorChange, fColorChange);
- basegfx::BColor aLighterColor(getColor() + aColorChange);
- basegfx::BColor aDarkerColor(getColor() - aColorChange);
-
- aLighterColor.clamp();
- aDarkerColor.clamp();
-
- // create shadow sequence
- drawinglayer::primitive2d::Primitive2DSequence aShadows(2);
- basegfx::B2DHomMatrix aTransform;
-
- aTransform.set(0, 2, -getDiscreteUnit());
- aTransform.set(1, 2, -getDiscreteUnit());
-
- aShadows[0] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::ShadowPrimitive2D(
- aTransform,
- aLighterColor,
- aRetval));
-
- aTransform.set(0, 2, getDiscreteUnit());
- aTransform.set(1, 2, getDiscreteUnit());
-
- aShadows[1] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::ShadowPrimitive2D(
- aTransform,
- aDarkerColor,
- aRetval));
-
- // add shadow before geometry to make it be proccessed first
- const drawinglayer::primitive2d::Primitive2DSequence aTemporary(aRetval);
-
- aRetval = aShadows;
- drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemporary);
- }
-
- if(AS_ALL == getAnkorState() || AS_END == getAnkorState())
- {
- // LineTop has to be created, too, but uses no shadow, so add after
- // the other parts are created
- const drawinglayer::attribute::LineAttribute aLineAttribute(
- getColor(),
- getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
-
- const drawinglayer::primitive2d::Primitive2DReference aLineTop(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- getLineTop(),
- aLineAttribute));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aLineTop);
- }
-
- return aRetval;
-}
-
-bool SwPostItAnkorPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
-{
- if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
- {
- const SwPostItAnkorPrimitive& rCompare = static_cast< const SwPostItAnkorPrimitive& >(rPrimitive);
-
- return (getTriangle() == rCompare.getTriangle()
- && getLine() == rCompare.getLine()
- && getLineTop() == rCompare.getLineTop()
- && getAnkorState() == rCompare.getAnkorState()
- && getColor() == rCompare.getColor()
- && getLogicLineWidth() == rCompare.getLogicLineWidth()
- && getShadow() == rCompare.getShadow()
- && getLineSolid() == rCompare.getLineSolid());
- }
-
- return false;
-}
-
-ImplPrimitrive2DIDBlock(SwPostItAnkorPrimitive, PRIMITIVE2D_ID_SWPOSTITANKORPRIMITIVE)
-
-/****** SwPostItAnkor ***********************************************************/
-
-void SwPostItAnkor::implEnsureGeometry()
-{
- if(!maTriangle.count())
- {
- maTriangle.append(getBasePosition());
- maTriangle.append(GetSecondPosition());
- maTriangle.append(GetThirdPosition());
- maTriangle.setClosed(true);
- }
-
- if(!maLine.count())
- {
- maLine.append(GetFourthPosition());
- maLine.append(GetFifthPosition());
- maLine.append(GetSixthPosition());
- }
-
- if(!maLineTop.count())
- {
- maLineTop.append(GetSixthPosition());
- maLineTop.append(GetSeventhPosition());
- }
-}
-
-void SwPostItAnkor::implResetGeometry()
-{
- maTriangle.clear();
- maLine.clear();
- maLineTop.clear();
-}
-
-SwPostItAnkor::SwPostItAnkor(const basegfx::B2DPoint& rBasePos,
- const basegfx::B2DPoint& rSecondPos,
- const basegfx::B2DPoint& rThirdPos,
- const basegfx::B2DPoint& rFourthPos,
- const basegfx::B2DPoint& rFifthPos,
- const basegfx::B2DPoint& rSixthPos,
- const basegfx::B2DPoint& rSeventhPos,
- Color aBaseColor,
- bool bShadowedEffect,
- bool bLineSolid)
- : OverlayObjectWithBasePosition(rBasePos, aBaseColor),
- maSecondPosition(rSecondPos),
- maThirdPosition(rThirdPos),
- maFourthPosition(rFourthPos),
- maFifthPosition(rFifthPos),
- maSixthPosition(rSixthPos),
- maSeventhPosition(rSeventhPos),
- maTriangle(),
- maLine(),
- maLineTop(),
- mHeight(0),
- mAnkorState(AS_ALL),
- mbShadowedEffect(bShadowedEffect),
- mbLineSolid(bLineSolid)
-{
- //mbAllowsAnimation = true;
-}
-
-SwPostItAnkor::~SwPostItAnkor()
-{
-}
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItAnkor::createOverlayObjectPrimitive2DSequence()
-{
- implEnsureGeometry();
-
- const drawinglayer::primitive2d::Primitive2DReference aReference(
- new SwPostItAnkorPrimitive(
- maTriangle,
- maLine,
- maLineTop,
- GetAnkorState(),
- getBaseColor().getBColor(),
- ANKORLINE_WIDTH * 15.0,
- getShadowedEffect(),
- getLineSolid()));
-
- return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
-}
-
-void SwPostItAnkor::SetAllPosition(const basegfx::B2DPoint& rPoint1,
- const basegfx::B2DPoint& rPoint2,
- const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4,
- const basegfx::B2DPoint& rPoint5,
- const basegfx::B2DPoint& rPoint6,
- const basegfx::B2DPoint& rPoint7)
-{
- if(rPoint1 != getBasePosition()
- || rPoint2 != GetSecondPosition()
- || rPoint3 != GetThirdPosition()
- || rPoint4 != GetFourthPosition()
- || rPoint5 != GetFifthPosition()
- || rPoint6 != GetSixthPosition()
- || rPoint7 != GetSeventhPosition())
- {
- maBasePosition = rPoint1;
- maSecondPosition = rPoint2;
- maThirdPosition = rPoint3;
- maFourthPosition = rPoint4;
- maFifthPosition = rPoint5;
- maSixthPosition = rPoint6;
- maSeventhPosition = rPoint7;
-
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetSixthPosition(const basegfx::B2DPoint& rNew)
-{
- if(rNew != maSixthPosition)
- {
- maSixthPosition = rNew;
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetSeventhPosition(const basegfx::B2DPoint& rNew)
-{
- if(rNew != maSeventhPosition)
- {
- maSeventhPosition = rNew;
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetTriPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2,const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4,const basegfx::B2DPoint& rPoint5)
-{
- if(rPoint1 != getBasePosition()
- || rPoint2 != GetSecondPosition()
- || rPoint3 != GetThirdPosition()
- || rPoint4 != GetFourthPosition()
- || rPoint5 != GetFifthPosition())
- {
- maBasePosition = rPoint1;
- maSecondPosition = rPoint2;
- maThirdPosition = rPoint3;
- maFourthPosition = rPoint4;
- maFifthPosition = rPoint5;
-
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::setLineSolid(bool bNew)
-{
- if(bNew != getLineSolid())
- {
- mbLineSolid = bNew;
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetAnkorState(AnkorState aState)
-{
- if (mAnkorState != aState)
- {
- mAnkorState = aState;
- objectChange();
- }
-}
diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx
index eb067cc61c71..0a3c8cc33623 100644
--- a/sw/source/ui/frmdlg/column.cxx
+++ b/sw/source/ui/frmdlg/column.cxx
@@ -354,7 +354,8 @@ IMPL_LINK(SwColumnDlg, OkHdl, OKButton*, EMPTYARG)
const SwSection* pCurrSection = rWrtShell.GetCurrSection();
const SwSectionFmt* pFmt = pCurrSection->GetFmt();
USHORT nNewPos = rWrtShell.GetSectionFmtPos( *pFmt );
- rWrtShell.ChgSection( nNewPos, *pCurrSection, pSectionSet );
+ SwSectionData aData(*pCurrSection);
+ rWrtShell.UpdateSection( nNewPos, aData, pSectionSet );
}
if(pSectionSet && pSectionSet->Count() && bSelSectionChanged )
diff --git a/xmloff/source/core/xmlkywd.cxx b/sw/source/ui/inc/SidebarWindowsConsts.hxx
index 87ce105d456e..378b2be0790a 100644
--- a/xmloff/source/core/xmlkywd.cxx
+++ b/sw/source/ui/inc/SidebarWindowsConsts.hxx
@@ -2,10 +2,14 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,14 +29,13 @@
*
************************************************************************/
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_xmloff.hxx"
+#ifndef _SIDEBARWINDOWSCONSTS_HXX
+#define _SIDEBARWINDOWSCONSTS_HXX
-#ifndef _XMLOFF_XMLKYWD_HXX
-#define XML_DEFINE_KEYWORDS
-#include "xmlkywd.hxx"
-#undef XML_DEFINE_KEYWORDS
-#endif
+namespace sw { namespace sidebarwindows {
+const sal_Int8 ANCHORLINE_WIDTH = 1;
+} } // end of namespace sw::sidebarwindows
+#endif
diff --git a/sw/source/ui/inc/regionsw.hxx b/sw/source/ui/inc/regionsw.hxx
index 40ba9d3d0a15..0237f560da09 100644
--- a/sw/source/ui/inc/regionsw.hxx
+++ b/sw/source/ui/inc/regionsw.hxx
@@ -61,91 +61,11 @@ namespace sfx2
class FileDialogHelper;
}
-/*--------------------------------------------------------------------
- Beschreibung:
- --------------------------------------------------------------------*/
-
-class SectRepr
-{
- SwSection aSection;
- SwFmtCol aCol;
- SvxBrushItem aBrush;
- SwFmtFtnAtTxtEnd aFtnNtAtEnd;
- SwFmtEndAtTxtEnd aEndNtAtEnd;
- SwFmtNoBalancedColumns aBalance;
- SvxFrameDirectionItem aFrmDirItem;
- SvxLRSpaceItem aLRSpaceItem;
- USHORT nArrPos;
- USHORT nColumn;
- BOOL bContent : 1; //zeigt an, ob evtl. Textinhalt im Bereich ist
- BOOL bSelected : 1; //fuer Multiselektion erst markieren, dann mit der TreeListBox arbeiten!
- ::com::sun::star::uno::Sequence <sal_Int8 > aTempPasswd;
-public:
- SectRepr(USHORT nPos, SwSection& rSect);
- BOOL operator ==(SectRepr& rSectRef) const
- {return nArrPos==rSectRef.GetArrPos();}
-
- BOOL operator <(SectRepr& rSectRef) const
- {return nArrPos<rSectRef.GetArrPos();}
-
- SwSection& GetSection() { return aSection; }
- SwFmtCol& GetCol() { return aCol; }
- SvxBrushItem& GetBackground() { return aBrush; }
- SwFmtFtnAtTxtEnd& GetFtnNtAtEnd() { return aFtnNtAtEnd; }
- SwFmtEndAtTxtEnd& GetEndNtAtEnd() { return aEndNtAtEnd; }
- SwFmtNoBalancedColumns& GetBalance() { return aBalance; }
- SvxFrameDirectionItem& GetFrmDir() { return aFrmDirItem; }
- SvxLRSpaceItem& GetLRSpace() { return aLRSpaceItem; }
-
- USHORT GetArrPos() const {return nArrPos;}
- const String& GetCondition() const {return aSection.GetCondition();}
- const String& GetName() const { return aSection.GetName(); }
- String GetFile() const;
- String GetSubRegion() const;
- void SetFile( const String& rFile );
- void SetFilter( const String& rFilter );
- void SetSubRegion( const String& rSubRegion );
-
- void SetFilePasswd( const String& rPasswd )
- { aSection.SetLinkFilePassWd( rPasswd ); }
- void SetCondition( const String& rString )
- {aSection.SetCondition( rString);}
- BOOL IsCondHidden()const
- {return aSection.IsCondHidden();}
- BOOL IsHidden()const
- {return aSection.IsHidden();}
- BOOL IsProtect()const
- {return aSection.IsProtect();}
- // --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonly()const
- {return aSection.IsEditInReadonly();}
- void SetEditInReadonly(BOOL bFlag = TRUE)
- {aSection.SetEditInReadonly(bFlag);}
- // <--
- void SetHidden(BOOL bFlag = TRUE)
- {aSection.SetHidden(bFlag);}
- void SetCondHidden(BOOL bFlag = TRUE)
- {aSection.SetCondHidden(bFlag);}
- void SetProtect(BOOL bFlag = TRUE)
- {aSection.SetProtect(bFlag);}
- BOOL IsContent(){return bContent;}
- void SetContent(BOOL bValue){bContent = bValue;}
- void SetSectionType(SectionType eSectionType) {aSection.SetType(eSectionType);}
- SectionType GetSectionType(){return aSection.GetType();}
-
- void SetSelected(){bSelected = TRUE;}
- BOOL IsSelected() const {return bSelected;}
-
-
- const ::com::sun::star::uno::Sequence <sal_Int8 >& GetPasswd() const {return aSection.GetPasswd();}
- ::com::sun::star::uno::Sequence <sal_Int8 >& GetTempPasswd() {return aTempPasswd;}
- void SetTempPasswd(const ::com::sun::star::uno::Sequence <sal_Int8 >& aPasswd) {aTempPasswd = aPasswd;}
-};
-
/*************************************************************************
Dialog "Bereiche bearbeiten"
*************************************************************************/
+class SectRepr;
typedef SectRepr* SectReprPtr;
SV_DECL_PTRARR_SORT( SectReprArr, SectReprPtr, 0, 4 )
@@ -385,7 +305,8 @@ public:
class SwInsertSectionTabDialog : public SfxTabDialog
{
SwWrtShell& rWrtSh;
- SwSection* pToInsertSection;
+ ::std::auto_ptr<SwSectionData> m_pSectionData;
+
protected:
virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
virtual short Ok();
@@ -393,8 +314,8 @@ public:
SwInsertSectionTabDialog(Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh);
virtual ~SwInsertSectionTabDialog();
- void SetSection(const SwSection& rSect);
- SwSection* GetSection() { return pToInsertSection;}
+ void SetSectionData(SwSectionData const& rSect);
+ SwSectionData * GetSectionData() { return m_pSectionData.get(); }
};
/* -----------------21.05.99 13:07-------------------
diff --git a/sw/source/ui/inc/wrtsh.hxx b/sw/source/ui/inc/wrtsh.hxx
index 2a65e1b36ff7..2fce41b1a972 100644
--- a/sw/source/ui/inc/wrtsh.hxx
+++ b/sw/source/ui/inc/wrtsh.hxx
@@ -47,7 +47,7 @@ class SdrView;
class SwView;
class SvGlobalName;
class SwInputFieldList;
-class SwSection;
+class SwSectionData;
class Timer;
class SvxMacro;
class SwFmtINetFmt;
@@ -460,7 +460,7 @@ typedef BOOL (SwWrtShell:: *FNSimpleMove)();
void AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet);
// Link fuers einfuegen von Bereichen uebers Drag&Drop/Clipboard
- DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection* );
+ DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSectionData* );
//ctoren, der erstere ist eine Art kontrollierter copy ctor fuer weitere
diff --git a/sw/source/ui/makefile.mk b/sw/source/ui/makefile.mk
index fa1dea2bac5c..b331a2a00765 100644
--- a/sw/source/ui/makefile.mk
+++ b/sw/source/ui/makefile.mk
@@ -58,8 +58,8 @@ SUBLIBS1= \
$(SLB)$/dbui.lib \
$(SLB)$/dialog.lib \
$(SLB)$/dochdl.lib \
- $(SLB)$/docvw.lib \
- $(SLB)$/envelp.lib \
+ $(SLB)$/docvw.lib \
+ $(SLB)$/envelp.lib \
$(SLB)$/fldui.lib \
$(SLB)$/frmdlg.lib \
$(SLB)$/globdoc.lib
diff --git a/sw/source/ui/shells/annotsh.cxx b/sw/source/ui/shells/annotsh.cxx
index b7b7b509d036..52c4d10c3f02 100755
--- a/sw/source/ui/shells/annotsh.cxx
+++ b/sw/source/ui/shells/annotsh.cxx
@@ -96,8 +96,8 @@
#include <breakit.hxx>
#include "annotsh.hxx"
#include "view.hxx"
-#include "PostItMgr.hxx"
-#include "postit.hxx"
+#include <PostItMgr.hxx>
+#include <SidebarWin.hxx>
#include "swtypes.hxx"
@@ -160,22 +160,23 @@ SwAnnotationShell::~SwAnnotationShell()
SfxUndoManager* SwAnnotationShell::GetUndoManager()
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveSidebarWin() )
{
DBG_ASSERT(pPostItMgr,"PostItMgr::Layout(): We are looping forever");
return 0;
}
- return &pPostItMgr->GetActivePostIt()->Engine()->GetUndoManager();
+ return &pPostItMgr->GetActiveSidebarWin()->GetOutlinerView()->GetOutliner()->GetUndoManager();
}
void SwAnnotationShell::Exec( SfxRequest &rReq )
{
//TODO: clean this up!!!!
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
@@ -269,7 +270,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
}
case FN_FORMAT_RESET:
{
- pPostItMgr->GetActivePostIt()->ResetAttributes();
+ pPostItMgr->GetActiveSidebarWin()->ResetAttributes();
rReq.Done();
break;
}
@@ -320,7 +321,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
aSel.nEndPos++;
pOLV->SetSelection(aSel);
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
pOLV->InsertField(SvxFieldItem(aFld, EE_FEATURE_FIELD));
}
break;
@@ -350,7 +351,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
}
case SID_CHARMAP:
{
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
InsertSymbol(rReq);
break;
}
@@ -359,7 +360,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
const SfxPoolItem* pItem = 0;
if(pNewAttrs)
pNewAttrs->GetItemState(nSlot, FALSE, &pItem );
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
pOLV->InsertText(((const SfxStringItem *)pItem)->GetValue());
break;
}
@@ -577,10 +578,10 @@ void SwAnnotationShell::GetState(SfxItemSet& rSet)
//SID_ATTR_PARA_ADJUST_BLOCK
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxWhichIter aIter(rSet);
@@ -764,7 +765,7 @@ void SwAnnotationShell::GetState(SfxItemSet& rSet)
if(nEEWhich)
rSet.Put(aEditAttr.Get(nEEWhich, sal_True), nWhich);
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -784,19 +785,19 @@ void SwAnnotationShell::StateSearch(SfxItemSet &rSet)
void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
- long aOldHeight = pPostItMgr->GetActivePostIt()->GetPostItTextHeight();
+ long aOldHeight = pPostItMgr->GetActiveSidebarWin()->GetPostItTextHeight();
sal_uInt16 nSlot = rReq.GetSlot();
switch (nSlot)
{
case SID_CUT:
- if ( (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED) && pOLV->HasSelection() )
+ if ( (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED) && pOLV->HasSelection() )
pOLV->Cut();
break;
case SID_COPY:
@@ -804,12 +805,12 @@ void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
pOLV->Copy();
break;
case SID_PASTE:
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
pOLV->Paste();
break;
case SID_PASTE_SPECIAL:
{
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
{
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractPasteDialog* pDlg = pFact->CreatePasteDialog( &rView.GetEditWin() );
@@ -852,19 +853,19 @@ void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
break;
}
}
- pPostItMgr->GetActivePostIt()->ResizeIfNeccessary(aOldHeight,pPostItMgr->GetActivePostIt()->GetPostItTextHeight());
+ pPostItMgr->GetActiveSidebarWin()->ResizeIfNeccessary(aOldHeight,pPostItMgr->GetActiveSidebarWin()->GetPostItTextHeight());
}
void SwAnnotationShell::StateClpbrd(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( &rView.GetEditWin() ) );
bool bPastePossible = ( aDataHelper.HasFormat( SOT_FORMAT_STRING ) || aDataHelper.HasFormat( SOT_FORMAT_RTF ) );
- bPastePossible = bPastePossible && (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED);
+ bPastePossible = bPastePossible && (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED);
SfxWhichIter aIter(rSet);
sal_uInt16 nWhich = aIter.FirstWhich();
@@ -875,7 +876,7 @@ void SwAnnotationShell::StateClpbrd(SfxItemSet &rSet)
{
case SID_CUT:
{
- if ( (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED) || !pOLV->HasSelection() )
+ if ( (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED) || !pOLV->HasSelection() )
rSet.DisableItem( nWhich );
}
case SID_COPY:
@@ -939,10 +940,10 @@ void SwAnnotationShell::StateStatusLine(SfxItemSet &rSet)
void SwAnnotationShell::StateInsert(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxWhichIter aIter(rSet);
sal_uInt16 nWhich = aIter.FirstWhich();
@@ -985,7 +986,7 @@ void SwAnnotationShell::StateInsert(SfxItemSet &rSet)
break;
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -1006,8 +1007,8 @@ void SwAnnotationShell::NoteExec(SfxRequest &rReq)
case FN_POSTIT:
case FN_DELETE_COMMENT:
case FN_DELETE_NOTE:
- if ( pPostItMgr->GetActivePostIt() )
- pPostItMgr->GetActivePostIt()->ExecuteCommand(nSlot);
+ if ( pPostItMgr->HasActiveSidebarWin() )
+ pPostItMgr->GetActiveSidebarWin()->ExecuteCommand(nSlot);
break;
case FN_DELETE_ALL_NOTES:
pPostItMgr->Delete();
@@ -1021,7 +1022,7 @@ void SwAnnotationShell::NoteExec(SfxRequest &rReq)
}
case FN_HIDE_NOTE:
/*
- if ( Mgr()->GetActivePostIt() == this )
+ if ( Mgr()->GetActiveSidebarWin() == this )
{
Mgr()->SetActivePostIt(0);
// put the cursor back into the document
@@ -1060,20 +1061,29 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
case FN_HIDE_NOTE_AUTHOR:
case FN_HIDE_ALL_NOTES:
{
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() || !pPostItMgr->GetActivePostIt()->ISA(SwPostIt))
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveAnnotationWin() )
+ {
rSet.DisableItem(nWhich);
+ }
break;
}
case FN_DELETE_COMMENT:
{
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() ) //|| !pPostItMgr->GetActivePostIt()->ISA(SwRedComment))
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveSidebarWin() /*HasActiveRedCommentWin()*/ )
+ {
rSet.DisableItem(nWhich);
+ }
break;
}
case FN_REPLY:
{
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() || !pPostItMgr->GetActivePostIt()->ISA(SwPostIt))
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveAnnotationWin() )
+ {
rSet.DisableItem(nWhich);
+ }
else
{
SvtUserOptions aUserOpt;
@@ -1081,7 +1091,7 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
if( !(sAuthor = aUserOpt.GetFullName()).Len())
if( !(sAuthor = aUserOpt.GetID()).Len() )
sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
- if (sAuthor == pPostItMgr->GetActivePostIt()->GetAuthor())
+ if (sAuthor == pPostItMgr->GetActiveSidebarWin()->GetAuthor())
rSet.DisableItem(nWhich);
}
break;
@@ -1091,9 +1101,9 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
break;
}
- if (pPostItMgr->GetActivePostIt())
+ if (pPostItMgr->HasActiveSidebarWin())
{
- if ( (pPostItMgr->GetActivePostIt()->IsProtected()) &&
+ if ( (pPostItMgr->GetActiveSidebarWin()->IsProtected()) &&
( (nSlotId==FN_DELETE_NOTE) || (nSlotId==FN_REPLY) ) )
rSet.DisableItem( nWhich );
}
@@ -1104,10 +1114,10 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
void SwAnnotationShell::ExecLingu(SfxRequest &rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
sal_uInt16 nSlot = rReq.GetSlot();
SwWrtShell &rSh = rView.GetWrtShell();
@@ -1219,10 +1229,10 @@ void SwAnnotationShell::ExecLingu(SfxRequest &rReq)
void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxWhichIter aIter(rSet);
@@ -1264,7 +1274,7 @@ void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
break;
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -1274,10 +1284,10 @@ void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
void SwAnnotationShell::ExecTransliteration(SfxRequest &rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
using namespace ::com::sun::star::i18n;
{
@@ -1321,7 +1331,9 @@ void SwAnnotationShell::ExecUndo(SfxRequest &rReq)
SfxUndoManager* pUndoManager = GetUndoManager();
SwWrtShell &rSh = rView.GetWrtShell();
- long aOldHeight = rView.GetPostItMgr()->GetActivePostIt() ? rView.GetPostItMgr()->GetActivePostIt()->GetPostItTextHeight() : 0;
+ long aOldHeight = rView.GetPostItMgr()->HasActiveSidebarWin()
+ ? rView.GetPostItMgr()->GetActiveSidebarWin()->GetPostItTextHeight()
+ : 0;
USHORT nId = rReq.GetSlot();
sal_uInt16 nCnt = 1;
@@ -1381,14 +1393,14 @@ void SwAnnotationShell::ExecUndo(SfxRequest &rReq)
rView.GetViewFrame()->GetBindings().InvalidateAll(sal_False);
- if (rView.GetPostItMgr()->GetActivePostIt())
- rView.GetPostItMgr()->GetActivePostIt()->ResizeIfNeccessary(aOldHeight,rView.GetPostItMgr()->GetActivePostIt()->GetPostItTextHeight());
+ if (rView.GetPostItMgr()->HasActiveSidebarWin())
+ rView.GetPostItMgr()->GetActiveSidebarWin()->ResizeIfNeccessary(aOldHeight,rView.GetPostItMgr()->GetActiveSidebarWin()->GetPostItTextHeight());
}
void SwAnnotationShell::StateUndo(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
SfxWhichIter aIter(rSet);
@@ -1477,7 +1489,7 @@ void SwAnnotationShell::StateUndo(SfxItemSet &rSet)
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -1498,10 +1510,10 @@ void SwAnnotationShell::StateDisableItems( SfxItemSet &rSet )
void SwAnnotationShell::InsertSymbol(SfxRequest& rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
const SfxItemSet *pArgs = rReq.GetArgs();
const SfxPoolItem* pItem = 0;
diff --git a/sw/source/ui/shells/textdrw.cxx b/sw/source/ui/shells/textdrw.cxx
index 5c6d043e0e01..e4d1bc817940 100644
--- a/sw/source/ui/shells/textdrw.cxx
+++ b/sw/source/ui/shells/textdrw.cxx
@@ -133,7 +133,6 @@ void SwBaseShell::InsertURLButton(const String& rURL, const String& rTarget, con
if (rSh.IsObjSelected())
{
-// rSh.ChgAnchor(FLY_AT_CNTNT);
rSh.UnSelectFrm();
}
}
diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx
index a5093e8efcdd..3f26e47c8823 100644
--- a/sw/source/ui/shells/textfld.cxx
+++ b/sw/source/ui/shells/textfld.cxx
@@ -80,8 +80,7 @@
#include <app.hrc>
-#include "PostItMgr.hxx"
-#include "postit.hxx"
+#include <PostItMgr.hxx>
using namespace nsSwDocInfoSubType;
@@ -315,8 +314,11 @@ void SwTextShell::ExecField(SfxRequest &rReq)
}
break;
case FN_DELETE_NOTE:
- if ( GetView().GetPostItMgr() && GetView().GetPostItMgr()->GetActivePostIt() )
- GetView().GetPostItMgr()->GetActivePostIt()->Delete();
+ if ( GetView().GetPostItMgr() &&
+ GetView().GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ GetView().GetPostItMgr()->DeleteActiveSidebarWin();
+ }
break;
case FN_DELETE_ALL_NOTES:
if ( GetView().GetPostItMgr() )
@@ -330,8 +332,11 @@ void SwTextShell::ExecField(SfxRequest &rReq)
}
break;
case FN_HIDE_NOTE:
- if ( GetView().GetPostItMgr() && GetView().GetPostItMgr()->GetActivePostIt() )
- GetView().GetPostItMgr()->GetActivePostIt()->Hide();
+ if ( GetView().GetPostItMgr() &&
+ GetView().GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ GetView().GetPostItMgr()->HideActiveSidebarWin();
+ }
break;
case FN_HIDE_ALL_NOTES:
if ( GetView().GetPostItMgr() )
@@ -627,7 +632,7 @@ void SwTextShell::StateField( SfxItemSet &rSet )
SwPostItMgr* pPostItMgr = GetView().GetPostItMgr();
if ( !pPostItMgr )
rSet.InvalidateItem( nWhich );
- else if ( !pPostItMgr->GetActivePostIt() )
+ else if ( !pPostItMgr->HasActiveSidebarWin() )
{
rSet.InvalidateItem( FN_DELETE_NOTE );
rSet.InvalidateItem( FN_HIDE_NOTE );
diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx
index c3631be9669f..d499add5ad53 100644
--- a/sw/source/ui/uiview/pview.cxx
+++ b/sw/source/ui/uiview/pview.cxx
@@ -1055,7 +1055,7 @@ void SwPagePreViewWin::Command( const CommandEvent& rCEvt )
if( pData )
{
const CommandWheelData aDataNew(pData->GetDelta(),pData->GetNotchDelta(),COMMAND_WHEEL_PAGESCROLL,
- pData->GetMode(),pData->GetModifier(),pData->IsHorz());
+ pData->GetMode(),pData->GetModifier(),pData->IsHorz(), pData->IsDeltaPixel());
const CommandEvent aEvent( rCEvt.GetMousePosPixel(),rCEvt.GetCommand(),rCEvt.IsMouseEvent(),&aDataNew);
bCallBase = !mrView.HandleWheelCommands( aEvent );
}
diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx
index 23e6a44012e4..4396ff03807c 100644
--- a/sw/source/ui/uiview/view.cxx
+++ b/sw/source/ui/uiview/view.cxx
@@ -212,7 +212,7 @@ void SwView::GotFocus() const
SwAnnotationShell* pAsAnnotationShell = PTR_CAST( SwAnnotationShell, pTopShell );
if ( pAsAnnotationShell )
{
- mpPostItMgr->SetActivePostIt(0);
+ mpPostItMgr->SetActiveSidebarWin(0);
const_cast< SwView* >( this )->AttrChangedNotify( pWrtShell );
}
}
@@ -1399,11 +1399,6 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue >
pValue->Value >>= bSelectedFrame;
bGotIsSelectedFrame = sal_True;
}
- else if (pValue->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsSelectedFrame" ) ) )
- {
- pValue->Value >>= bSelectedFrame;
- bGotIsSelectedFrame = sal_True;
- }
pValue++;
}
if (bGotVisibleBottom)
diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx
index a38956cc5d68..e19e06916145 100644
--- a/sw/source/ui/uiview/view2.cxx
+++ b/sw/source/ui/uiview/view2.cxx
@@ -125,7 +125,6 @@
#include <dbmgr.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
#include <ndtxt.hxx> //#outline level,added by zhaojianwei
@@ -1369,12 +1368,12 @@ void SwView::StateStatusLine(SfxItemSet &rSet)
{
ASSERT( !this,
"was ist das fuer ein Verzeichnis?" );
- sStr = pCurrSect->GetName();
+ sStr = pCurrSect->GetSectionName();
}
}
break;
default:
- sStr = pCurrSect->GetName();
+ sStr = pCurrSect->GetSectionName();
break;
}
}
@@ -1760,8 +1759,10 @@ void SwView::ExecuteStatusLine(SfxRequest &rReq)
break;
case SID_ATTR_INSERT:
SwPostItMgr* pMgr = GetPostItMgr();
- if (pMgr && pMgr->GetActivePostIt())
- pMgr->GetActivePostIt()->ToggleInsMode();
+ if ( pMgr && pMgr->HasActiveSidebarWin() )
+ {
+ pMgr->ToggleInsModeOnActiveSidebarWin();
+ }
else
rSh.ToggleInsMode();
bUp = TRUE;
@@ -1776,9 +1777,6 @@ void SwView::ExecuteStatusLine(SfxRequest &rReq)
}
}
-
-
-
void SwView::InsFrmMode(USHORT nCols)
{
if ( pWrtShell->HasWholeTabSelection() )
diff --git a/sw/source/ui/uiview/viewmdi.cxx b/sw/source/ui/uiview/viewmdi.cxx
index d3c5d54d8743..9dfa8e79ecfa 100644
--- a/sw/source/ui/uiview/viewmdi.cxx
+++ b/sw/source/ui/uiview/viewmdi.cxx
@@ -82,7 +82,6 @@
#include <IDocumentSettingAccess.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
USHORT SwView::nMoveType = NID_PGE;
sal_Int32 SwView::nActMark = 0;
@@ -241,12 +240,12 @@ void SwView::_SetZoom( const Size &rEditSize, SvxZoomType eZoomType,
if( bUnLockView )
pWrtShell->LockView( FALSE );
- if ( mpPostItMgr )
- {
- mpPostItMgr->Rescale();
- mpPostItMgr->CalcRects();
- mpPostItMgr->LayoutPostIts();
- }
+// if ( mpPostItMgr )
+// {
+// mpPostItMgr->Rescale();
+// mpPostItMgr->CalcRects();
+// mpPostItMgr->LayoutPostIts();
+// }
// eZoom = eZoomType;
}
@@ -489,15 +488,15 @@ IMPL_STATIC_LINK( SwView, MoveNavigationHdl, bool *, pbNext )
break;
case NID_POSTIT:
{
- SwMarginWin* pPostIt = pThis->GetPostItMgr()->GetActivePostIt();
+ sw::sidebarwindows::SwSidebarWin* pPostIt = pThis->GetPostItMgr()->GetActiveSidebarWin();
if (pPostIt)
- pThis->GetPostItMgr()->SetActivePostIt(0);
+ pThis->GetPostItMgr()->SetActiveSidebarWin(0);
SwFieldType* pFldType = rSh.GetFldType(0, RES_POSTITFLD);
if (rSh.MoveFldType(pFldType, bNext))
pThis->GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
else
//first/last item
- pThis->GetPostItMgr()->SetActivePostIt(pPostIt);
+ pThis->GetPostItMgr()->SetActiveSidebarWin(pPostIt);
}
break;
case NID_SRCH_REP:
diff --git a/sw/source/ui/uiview/viewsrch.cxx b/sw/source/ui/uiview/viewsrch.cxx
index b12fc6280cc9..57c7bd20623c 100644
--- a/sw/source/ui/uiview/viewsrch.cxx
+++ b/sw/source/ui/uiview/viewsrch.cxx
@@ -602,7 +602,7 @@ void SwView::Replace()
}
else
{
- if (GetPostItMgr()->GetActivePostIt())
+ if (GetPostItMgr()->HasActiveSidebarWin())
GetPostItMgr()->Replace(pSrchItem);
sal_Bool bReplaced = pWrtShell->SwEditShell::Replace( pSrchItem->GetReplaceString(),
pSrchItem->GetRegExp());
diff --git a/sw/source/ui/uiview/viewtab.cxx b/sw/source/ui/uiview/viewtab.cxx
index 7088347480a8..44e314a7475b 100644
--- a/sw/source/ui/uiview/viewtab.cxx
+++ b/sw/source/ui/uiview/viewtab.cxx
@@ -422,7 +422,8 @@ void SwView::ExecTabWin( SfxRequest& rReq )
::ResizeFrameCols(aCols, aSectRect.Width(), aSectRect.Width() - nDiffWidth, nLeftDiff );
aSet.Put( aCols );
}
- rSh.ChgSection( rSh.GetSectionFmtPos(*pSectFmt), *pCurrSect, &aSet );
+ SwSectionData aData(*pCurrSect);
+ rSh.UpdateSection(rSh.GetSectionFmtPos(*pSectFmt), aData, &aSet);
}
else
{ // Seitenraender einstellen
@@ -511,8 +512,8 @@ void SwView::ExecTabWin( SfxRequest& rReq )
::ResizeFrameCols(aCols, aSectRect.Height(), aSectRect.Height() - nDiffWidth, nLeftDiff );
aSet.Put( aCols );
}
- rSh.ChgSection( rSh.GetSectionFmtPos(*pSectFmt), *pCurrSect, &aSet );
-
+ SwSectionData aData(*pCurrSect);
+ rSh.UpdateSection(rSh.GetSectionFmtPos(*pSectFmt), aData, &aSet);
}
else
{ SwPageDesc aDesc( rDesc );
diff --git a/sw/source/ui/utlui/attrdesc.cxx b/sw/source/ui/utlui/attrdesc.cxx
index 06c1a580a73f..418ea4a4559b 100644
--- a/sw/source/ui/utlui/attrdesc.cxx
+++ b/sw/source/ui/utlui/attrdesc.cxx
@@ -683,13 +683,13 @@ SfxItemPresentation SwFmtAnchor::GetPresentation
switch ( GetAnchorId() )
{
case FLY_AT_PARA:
- nId = STR_FLY_AT_CNTNT;
+ nId = STR_FLY_AT_PARA;
break;
case FLY_AS_CHAR:
- nId = STR_FLY_IN_CNTNT;
+ nId = STR_FLY_AS_CHAR;
break;
case FLY_AT_PAGE:
- nId = STR_FLY_PAGE;
+ nId = STR_FLY_AT_PAGE;
break;
default:;//prevent warning
}
diff --git a/sw/source/ui/utlui/attrdesc.hrc b/sw/source/ui/utlui/attrdesc.hrc
index a750750566f3..1f2c5d34fa37 100644
--- a/sw/source/ui/utlui/attrdesc.hrc
+++ b/sw/source/ui/utlui/attrdesc.hrc
@@ -55,9 +55,9 @@
#define STR_FRM_WIDTH (RC_ATTR_BEGIN + 23)
#define STR_FRM_FIXEDHEIGHT (RC_ATTR_BEGIN + 24)
#define STR_FRM_MINHEIGHT (RC_ATTR_BEGIN + 25)
-#define STR_FLY_AT_CNTNT (RC_ATTR_BEGIN + 26)
-#define STR_FLY_IN_CNTNT (RC_ATTR_BEGIN + 27)
-#define STR_FLY_PAGE (RC_ATTR_BEGIN + 28)
+#define STR_FLY_AT_PARA (RC_ATTR_BEGIN + 26)
+#define STR_FLY_AS_CHAR (RC_ATTR_BEGIN + 27)
+#define STR_FLY_AT_PAGE (RC_ATTR_BEGIN + 28)
#define STR_POS_X (RC_ATTR_BEGIN + 29)
#define STR_POS_Y (RC_ATTR_BEGIN + 30)
#define STR_VERT_TOP (RC_ATTR_BEGIN + 31)
diff --git a/sw/source/ui/utlui/attrdesc.src b/sw/source/ui/utlui/attrdesc.src
index f1602efcacd8..809af110da6f 100644
--- a/sw/source/ui/utlui/attrdesc.src
+++ b/sw/source/ui/utlui/attrdesc.src
@@ -148,15 +148,15 @@ String STR_FRM_MINHEIGHT
/* ### ACHTUNG: Neuer Text in Resource? min. Höhe: : min. H÷he: */
Text [ en-US ] = "Min. height:" ;
};
-String STR_FLY_AT_CNTNT
+String STR_FLY_AT_PARA
{
Text [ en-US ] = "to paragraph" ;
};
-String STR_FLY_IN_CNTNT
+String STR_FLY_AS_CHAR
{
Text [ en-US ] = "to character" ;
};
-String STR_FLY_PAGE
+String STR_FLY_AT_PAGE
{
Text [ en-US ] = "to page" ;
};
diff --git a/sw/source/ui/utlui/content.cxx b/sw/source/ui/utlui/content.cxx
index 9be4ef6eadf3..0b0bca564f48 100644
--- a/sw/source/ui/utlui/content.cxx
+++ b/sw/source/ui/utlui/content.cxx
@@ -106,7 +106,6 @@
#include <swundo.hxx>
#include <ndtxt.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
#include <postithelper.hxx>
#include <redline.hxx>
#include <docary.hxx>
@@ -335,7 +334,8 @@ void SwContentType::Init(sal_Bool* pbInvalidateWindow)
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- const String& rSectionName = pFmt->GetSection()->GetName();
+ const String& rSectionName =
+ pFmt->GetSection()->GetSectionName();
BYTE nLevel = 0;
SwSectionFmt* pParentFmt = pFmt->GetParent();
while(pParentFmt)
@@ -697,7 +697,7 @@ void SwContentType::FillMemberList(sal_Bool* pbLevelOrVisibiblityChanged)
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- String sSectionName = pFmt->GetSection()->GetName();
+ String sSectionName = pFmt->GetSection()->GetSectionName();
BYTE nLevel = 0;
SwSectionFmt* pParentFmt = pFmt->GetParent();
@@ -2670,7 +2670,7 @@ void SwContentTree::ExcecuteContextMenuAction( USHORT nSelectedPopupEntry )
break;
case 602:
{
- pActiveShell->GetView().GetPostItMgr()->SetActivePostIt(0);
+ pActiveShell->GetView().GetPostItMgr()->SetActiveSidebarWin(0);
pActiveShell->GetView().GetPostItMgr()->Delete();
break;
}
@@ -2932,7 +2932,7 @@ void SwContentTree::EditEntry(SvLBoxEntry* pEntry, sal_uInt8 nMode)
{
if (((SwPostItContent*)pCnt)->IsPostIt())
{
- pActiveShell->GetView().GetPostItMgr()->SetActivePostIt(0);
+ pActiveShell->GetView().GetPostItMgr()->SetActiveSidebarWin(0);
pActiveShell->DelRight();
}
/*
@@ -3140,7 +3140,7 @@ void SwContentTree::GotoContent(SwContent* pCnt)
}
SwView& rView = pActiveShell->GetView();
rView.StopShellTimer();
- rView.GetPostItMgr()->SetActivePostIt(0);
+ rView.GetPostItMgr()->SetActiveSidebarWin(0);
rView.GetEditWin().GrabFocus();
}
/*-----------------06.02.97 19.14-------------------
diff --git a/sw/source/ui/utlui/glbltree.cxx b/sw/source/ui/utlui/glbltree.cxx
index fea4b72462e3..e9b8fdf6feef 100644
--- a/sw/source/ui/utlui/glbltree.cxx
+++ b/sw/source/ui/utlui/glbltree.cxx
@@ -32,18 +32,14 @@
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#endif
-#ifndef _MSGBOX_HXX //autogen
#include <vcl/msgbox.hxx>
-#endif
#include <svl/stritem.hxx>
#include <sfx2/fcontnr.hxx>
#include <sfx2/linkmgr.hxx>
#include <sfx2/dispatch.hxx>
#include <svl/urihelper.hxx>
#include <sfx2/docfile.hxx>
-#ifndef _HELP_HXX //autogen
#include <vcl/help.hxx>
-#endif
#include <sot/filelist.hxx>
#include <svl/eitem.hxx>
#include <svl/urlbmk.hxx>
@@ -54,13 +50,9 @@
#include <sfx2/app.hxx>
#include <swmodule.hxx>
#include <wrtsh.hxx>
-#ifndef _VIEW_HXX
#include <view.hxx>
-#endif
#include <errhdl.hxx>
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
#include <content.hxx>
#include <edglbldc.hxx>
#include <section.hxx>
@@ -72,12 +64,8 @@
#include <edtwin.hxx>
#include <uitool.hxx>
-#ifndef _CMDID_H
#include <cmdid.h>
-#endif
-#ifndef _HELPID_H
#include <helpid.h>
-#endif
#ifndef _NAVIPI_HRC
#include <navipi.hrc>
#endif
@@ -779,7 +767,7 @@ void SwGlobalTree::Display(BOOL bOnlyUpdateUserData)
case GLBLDOC_SECTION:
{
const SwSection* pSect = pCont->GetSection();
- sEntry = pSect->GetName();
+ sEntry = pSect->GetSectionName();
aImage = aEntryImages.GetImage(SID_SW_START + CONTENT_TYPE_REGION);
}
break;
@@ -947,7 +935,8 @@ void SwGlobalTree::ExcecuteContextMenuAction( USHORT nSelectedPopupEntry )
case CTX_EDIT_LINK:
{
DBG_ASSERT(pCont, "Edit ohne Entry ? " );
- SfxStringItem aName(FN_EDIT_REGION, pCont->GetSection()->GetName());
+ SfxStringItem aName(FN_EDIT_REGION,
+ pCont->GetSection()->GetSectionName());
rDispatch.Execute(FN_EDIT_REGION, SFX_CALLMODE_ASYNCHRON, &aName, 0L);
}
break;
@@ -1254,7 +1243,7 @@ BOOL SwGlobalTree::Update(BOOL bHard)
String sTemp = GetEntryText(pEntry);
if(eType != pRight->GetType() ||
eType == GLBLDOC_SECTION &&
- pLeft->GetSection()->GetName() != sTemp ||
+ (pLeft->GetSection()->GetSectionName() != sTemp) ||
eType == GLBLDOC_TOXBASE && pLeft->GetTOX()->GetTitle() != sTemp)
bCopy = bRet = TRUE;
}
@@ -1456,7 +1445,8 @@ void SwGlobalTree::InsertRegion( const SwGlblDocContent* _pContent, const Sequen
while ( nCount < nSectCount )
{
const SwSectionFmt& rFmt = rSh.GetSectionFmt(nCount);
- if ( rFmt.GetSection()->GetName() == sTempSectionName && rFmt.IsInNodesArr() )
+ if ((rFmt.GetSection()->GetSectionName() == sTempSectionName)
+ && rFmt.IsInNodesArr())
{
nCount = 0;
nAddNumber++;
@@ -1471,15 +1461,15 @@ void SwGlobalTree::InsertRegion( const SwGlblDocContent* _pContent, const Sequen
if ( nAddNumber )
sSectionName = sTempSectionName;
- SwSection aSection(CONTENT_SECTION, sSectionName);
- aSection.SetProtect(TRUE);
- aSection.SetHidden(FALSE);
+ SwSectionData aSectionData(CONTENT_SECTION, sSectionName);
+ aSectionData.SetProtectFlag(true);
+ aSectionData.SetHidden(false);
- aSection.SetLinkFileName(sFileName);
- aSection.SetType( FILE_LINK_SECTION);
- aSection.SetLinkFilePassWd( sFilePassword );
+ aSectionData.SetLinkFileName(sFileName);
+ aSectionData.SetType(FILE_LINK_SECTION);
+ aSectionData.SetLinkFilePassword( sFilePassword );
- rSh.InsertGlobalDocContent( *pAnchorContent, aSection );
+ rSh.InsertGlobalDocContent( *pAnchorContent, aSectionData );
}
if ( bMove )
{
diff --git a/sw/source/ui/vba/vbafind.cxx b/sw/source/ui/vba/vbafind.cxx
index 79112109bf8c..fccf04181993 100644
--- a/sw/source/ui/vba/vbafind.cxx
+++ b/sw/source/ui/vba/vbafind.cxx
@@ -80,13 +80,13 @@ void SwVbaFind::SetReplace( sal_Int32 type )
mnReplaceType = type;
mbReplace = sal_True;
}
-
+#ifdef TOMORROW
rtl::OUString SwVbaFind::ReplaceWildcards( const rtl::OUString& /*rText*/ ) throw ( uno::RuntimeException )
{
// TODO:
return rtl::OUString();
}
-
+#endif
uno::Reference< text::XTextRange > SwVbaFind::FindOneElement() throw ( uno::RuntimeException )
{
uno::Reference< text::XTextRange > xFoundOne;
diff --git a/sw/source/ui/vba/vbafind.hxx b/sw/source/ui/vba/vbafind.hxx
index 1252050c7823..ef971866500d 100644
--- a/sw/source/ui/vba/vbafind.hxx
+++ b/sw/source/ui/vba/vbafind.hxx
@@ -58,7 +58,9 @@ private:
void SetReplace( sal_Int32 type );
void SetReplaceWith( const rtl::OUString& rText ) throw ( css::uno::RuntimeException );
rtl::OUString GetReplaceWith() throw ( css::uno::RuntimeException );
+#ifdef TOMORROW
rtl::OUString ReplaceWildcards( const rtl::OUString& rText ) throw ( css::uno::RuntimeException );
+#endif
css::uno::Reference< css::text::XTextRange > FindOneElement() throw ( css::uno::RuntimeException );
sal_Bool SearchReplace() throw ( css::uno::RuntimeException );
diff --git a/sw/source/ui/vba/vbaheaderfooterhelper.cxx b/sw/source/ui/vba/vbaheaderfooterhelper.cxx
index 240bba8d900b..604cc1e11d8c 100644
--- a/sw/source/ui/vba/vbaheaderfooterhelper.cxx
+++ b/sw/source/ui/vba/vbaheaderfooterhelper.cxx
@@ -155,7 +155,7 @@ sal_Bool HeaderFooterHelper::isEvenPagesFooter( const uno::Reference< frame::XMo
}
return sal_False;
}
-
+#ifdef TOMORROW
sal_Bool HeaderFooterHelper::isPrimaryHeader( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException)
{
if( isHeader( xModel, xCurrentText ) )
@@ -173,3 +173,4 @@ sal_Bool HeaderFooterHelper::isPrimaryFooter( const uno::Reference< frame::XMode
}
return sal_False;
}
+#endif
diff --git a/sw/source/ui/vba/vbaheaderfooterhelper.hxx b/sw/source/ui/vba/vbaheaderfooterhelper.hxx
index 30f4a0222549..fd29a16015ab 100644
--- a/sw/source/ui/vba/vbaheaderfooterhelper.hxx
+++ b/sw/source/ui/vba/vbaheaderfooterhelper.hxx
@@ -42,8 +42,10 @@ public:
static sal_Bool isFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
static sal_Bool isFirstPageFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
static sal_Bool isEvenPagesFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
+#ifdef TOMORROW
static sal_Bool isPrimaryHeader( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
static sal_Bool isPrimaryFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
+#endif
};
#endif
diff --git a/sw/source/ui/vba/vbarange.cxx b/sw/source/ui/vba/vbarange.cxx
index 2f1ee48ec5ef..647aedb34791 100644
--- a/sw/source/ui/vba/vbarange.cxx
+++ b/sw/source/ui/vba/vbarange.cxx
@@ -84,13 +84,13 @@ SwVbaRange::getXTextRange() throw (uno::RuntimeException)
uno::Reference< text::XTextRange > xTextRange( mxTextCursor, uno::UNO_QUERY_THROW );
return xTextRange;
}
-
+#ifdef TOMORROW
void SwVbaRange::setXTextRange( const uno::Reference< text::XTextRange >& xRange ) throw (uno::RuntimeException)
{
mxTextCursor->gotoRange( xRange->getStart(), sal_False );
mxTextCursor->gotoRange( xRange->getEnd(), sal_True );
}
-
+#endif
/**
* The complexity in this method is because we need to workaround
* an issue that the last paragraph in a document does not have a trailing CRLF.
diff --git a/sw/source/ui/vba/vbarange.hxx b/sw/source/ui/vba/vbarange.hxx
index 73992494f146..1f1b3a3bbc8b 100644
--- a/sw/source/ui/vba/vbarange.hxx
+++ b/sw/source/ui/vba/vbarange.hxx
@@ -56,7 +56,9 @@ public:
css::uno::Reference< css::text::XTextDocument > getDocument() { return mxTextDocument; }
virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getXTextRange() throw (css::uno::RuntimeException);
+#ifdef TOMORROW
void setXTextRange( const css::uno::Reference< css::text::XTextRange >& xRange ) throw (css::uno::RuntimeException);
+#endif
css::uno::Reference< css::text::XText > getXText() { return mxText; }
void setXTextCursor( const css::uno::Reference< css::text::XTextCursor >& xTextCursor ) { mxTextCursor = xTextCursor; }
diff --git a/sw/source/ui/vba/vbasystem.cxx b/sw/source/ui/vba/vbasystem.cxx
index 71b2389bc96b..42d1c09ccbac 100644
--- a/sw/source/ui/vba/vbasystem.cxx
+++ b/sw/source/ui/vba/vbasystem.cxx
@@ -37,11 +37,6 @@
using namespace ::ooo::vba;
using namespace ::com::sun::star;
-PrivateProfileStringListener::PrivateProfileStringListener( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey )
- :maFileName( rFileName ), maGroupName( rGroupName ), maKey( rKey )
-{
-}
-
PrivateProfileStringListener::~PrivateProfileStringListener()
{
}
diff --git a/sw/source/ui/vba/vbasystem.hxx b/sw/source/ui/vba/vbasystem.hxx
index e11494857617..deeb6f00fdf4 100644
--- a/sw/source/ui/vba/vbasystem.hxx
+++ b/sw/source/ui/vba/vbasystem.hxx
@@ -42,7 +42,6 @@ private:
ByteString maKey;
public:
PrivateProfileStringListener(){};
- PrivateProfileStringListener( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey );
virtual ~PrivateProfileStringListener();
void Initialize( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey );
diff --git a/sw/source/ui/vba/vbawindow.cxx b/sw/source/ui/vba/vbawindow.cxx
index 519b5a5c725b..e3d9bddbc7aa 100644
--- a/sw/source/ui/vba/vbawindow.cxx
+++ b/sw/source/ui/vba/vbawindow.cxx
@@ -39,11 +39,6 @@ SwVbaWindow::SwVbaWindow( const uno::Reference< XHelperInterface >& xParent, con
{
}
-SwVbaWindow::SwVbaWindow( uno::Sequence< uno::Any > const & args, uno::Reference< uno::XComponentContext > const & xContext )
- : WindowImpl_BASE( args, xContext )
-{
-}
-
void
SwVbaWindow::Activate() throw (css::uno::RuntimeException)
{
diff --git a/sw/source/ui/vba/vbawindow.hxx b/sw/source/ui/vba/vbawindow.hxx
index 902af1b51257..0809d2b73685 100644
--- a/sw/source/ui/vba/vbawindow.hxx
+++ b/sw/source/ui/vba/vbawindow.hxx
@@ -39,7 +39,6 @@ class SwVbaWindow : public WindowImpl_BASE
{
public:
SwVbaWindow( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::frame::XModel >& xModel );
- SwVbaWindow( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext > const& xContext );
// Attributes
diff --git a/sw/source/ui/vba/vbawrapformat.cxx b/sw/source/ui/vba/vbawrapformat.cxx
index 92e3e78790a0..4125cc00aaa0 100644
--- a/sw/source/ui/vba/vbawrapformat.cxx
+++ b/sw/source/ui/vba/vbawrapformat.cxx
@@ -34,11 +34,6 @@
using namespace ooo::vba;
using namespace com::sun::star;
-SwVbaWrapFormat::SwVbaWrapFormat( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape > xShape ) : SwVbaWrapFormat_BASE( xParent, xContext ), m_xShape( xShape ), mnWrapFormatType( 0 ), mnSide( word::WdWrapSideType::wdWrapBoth )
-{
- m_xPropertySet.set( xShape, uno::UNO_QUERY_THROW );
-}
-
SwVbaWrapFormat::SwVbaWrapFormat( uno::Sequence< uno::Any > const& aArgs, uno::Reference< uno::XComponentContext >const& xContext ) : SwVbaWrapFormat_BASE( getXSomethingFromArgs< XHelperInterface >( aArgs, 0 ), xContext ), m_xShape( getXSomethingFromArgs< drawing::XShape >( aArgs, 1, false ) ), mnWrapFormatType( 0 ), mnSide( word::WdWrapSideType::wdWrapBoth )
{
m_xPropertySet.set( m_xShape, uno::UNO_QUERY_THROW );
diff --git a/sw/source/ui/vba/vbawrapformat.hxx b/sw/source/ui/vba/vbawrapformat.hxx
index e24f2b90ac42..71520d78aaae 100644
--- a/sw/source/ui/vba/vbawrapformat.hxx
+++ b/sw/source/ui/vba/vbawrapformat.hxx
@@ -47,7 +47,6 @@ private:
void setDistance( const rtl::OUString& sName, float _distance ) throw (css::uno::RuntimeException);
public:
- SwVbaWrapFormat( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::drawing::XShape > xShape );
SwVbaWrapFormat( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext >const& xContext );
virtual ::sal_Int32 SAL_CALL getType() throw (css::uno::RuntimeException);
diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx
index 57e76a9cff61..c7cb89bf5e61 100644
--- a/sw/source/ui/wrtsh/wrtsh1.cxx
+++ b/sw/source/ui/wrtsh/wrtsh1.cxx
@@ -1476,7 +1476,7 @@ SelectionType SwWrtShell::GetSelectionType() const
// return nsSelectionType::SEL_TBL | nsSelectionType::SEL_TBL_CELLS;
SwView &_rView = ((SwView&)GetView());
- if (_rView.GetPostItMgr() && _rView.GetPostItMgr()->GetActivePostIt() )
+ if (_rView.GetPostItMgr() && _rView.GetPostItMgr()->HasActiveSidebarWin() )
return nsSelectionType::SEL_POSTIT;
int nCnt;
@@ -1808,7 +1808,7 @@ BOOL SwWrtShell::Pop( BOOL bOldCrsr )
--------------------------------------------------------------------*/
BOOL SwWrtShell::CanInsert()
{
- return (!(IsSelFrmMode() | IsObjSelected() | (GetView().GetDrawFuncPtr() != NULL) | (GetView().GetPostItMgr()->GetActivePostIt()!= NULL)));
+ return (!(IsSelFrmMode() | IsObjSelected() | (GetView().GetDrawFuncPtr() != NULL) | (GetView().GetPostItMgr()->GetActiveSidebarWin()!= NULL)));
}
// die Core erzeugt eine Selektion, das SttSelect muss gerufen werden
diff --git a/sw/source/ui/wrtsh/wrtsh2.cxx b/sw/source/ui/wrtsh/wrtsh2.cxx
index 4d0172a5461b..17af61be8bad 100644
--- a/sw/source/ui/wrtsh/wrtsh2.cxx
+++ b/sw/source/ui/wrtsh/wrtsh2.cxx
@@ -468,20 +468,20 @@ void SwWrtShell::NavigatorPaste( const NaviContentBookmark& rBkmk,
}
else
{
- SwSection aSection( FILE_LINK_SECTION, GetUniqueSectionName( 0 ) );
+ SwSectionData aSection( FILE_LINK_SECTION, GetUniqueSectionName( 0 ) );
String aLinkFile( rBkmk.GetURL().GetToken(0, '#') );
aLinkFile += sfx2::cTokenSeperator;
aLinkFile += sfx2::cTokenSeperator;
aLinkFile += rBkmk.GetURL().GetToken(1, '#');
aSection.SetLinkFileName( aLinkFile );
- aSection.SetProtect( TRUE );
+ aSection.SetProtectFlag( true );
const SwSection* pIns = InsertSection( aSection );
if( EXCHG_IN_ACTION_MOVE == nAction && pIns )
{
- aSection = *pIns;
+ aSection = SwSectionData(*pIns);
aSection.SetLinkFileName( aEmptyStr );
aSection.SetType( CONTENT_SECTION );
- aSection.SetProtect( FALSE );
+ aSection.SetProtectFlag( false );
// the update of content from linked section at time delete
// the undostack. Then the change of the section dont create
@@ -489,7 +489,7 @@ void SwWrtShell::NavigatorPaste( const NaviContentBookmark& rBkmk,
BOOL bDoesUndo = DoesUndo();
if( UNDO_INSSECTION != GetUndoIds() )
DoUndo( FALSE );
- ChgSection( GetSectionFmtPos( *pIns->GetFmt() ), aSection );
+ UpdateSection( GetSectionFmtPos( *pIns->GetFmt() ), aSection );
DoUndo( bDoesUndo );
}
}
diff --git a/sw/util/makefile.mk b/sw/util/makefile.mk
index 557e871a74e7..2907264d89cf 100644
--- a/sw/util/makefile.mk
+++ b/sw/util/makefile.mk
@@ -44,7 +44,7 @@ sw_res_files= \
$(SRS)$/dialog.srs \
$(SRS)$/chrdlg.srs \
$(SRS)$/config.srs \
- $(SRS)$/dbui.srs \
+ $(SRS)$/dbui.srs \
$(SRS)$/dochdl.srs \
$(SRS)$/docvw.srs \
$(SRS)$/envelp.srs \
@@ -60,7 +60,7 @@ sw_res_files= \
$(SRS)$/smartmenu.srs \
$(SRS)$/table.srs \
$(SRS)$/uiview.srs \
- $(SRS)$/undo.srs \
+ $(SRS)$/undo.srs \
$(SRS)$/unocore.srs \
$(SRS)$/utlui.srs \
$(SRS)$/web.srs \
@@ -118,8 +118,8 @@ SHL1STDLIBS+= \
$(SALLIB) \
$(SALHELPERLIB) \
$(ICUUCLIB) \
- $(I18NUTILLIB) \
- $(VBAHELPERLIB) \
+ $(I18NUTILLIB)
+SHL1STDLIBS+= \
$(AVMEDIALIB)
.IF "$(GUI)"=="WNT"
@@ -337,6 +337,7 @@ SHL4STDLIBS= \
$(BASICLIB) \
$(I18NUTILLIB)
+.IF "$(ENABLE_VBA)" == "YES"
#target vba
TARGET_VBA=vbaswobj
SHL5TARGET=$(TARGET_VBA)$(DLLPOSTFIX).uno
@@ -370,5 +371,6 @@ SHL5STDLIBS= \
SHL5DEPN=$(SHL1TARGETN)
SHL5LIBS=$(SLB)$/$(TARGET_VBA).lib
+.ENDIF # .IF "$(ENABLE_VBA)" == "YES"
.INCLUDE : target.mk
diff --git a/sysui/desktop/freedesktop/freedesktop-menus.spec b/sysui/desktop/freedesktop/freedesktop-menus.spec
index 501f8432d940..1649971dad99 100644
--- a/sysui/desktop/freedesktop/freedesktop-menus.spec
+++ b/sysui/desktop/freedesktop/freedesktop-menus.spec
@@ -14,6 +14,8 @@ Conflicts: %pkgprefix-redhat-menus
Conflicts: %pkgprefix-mandriva-menus
BuildArch: noarch
AutoReqProv: no
+%define _binary_filedigest_algorithm 1
+%define _binary_payload w9.gzdio
%description
%productname desktop integration for desktop-environments that implement
diff --git a/sysui/desktop/macosx/Info.plist b/sysui/desktop/macosx/Info.plist
index 029e479a3ffc..cf04e8086afe 100644
--- a/sysui/desktop/macosx/Info.plist
+++ b/sysui/desktop/macosx/Info.plist
@@ -622,7 +622,7 @@
</dict>
</dict>
- <!--- Microsoft Excel XML -->
+ <!-- Microsoft Excel XML -->
<dict>
<key>UTTypeConformsTo</key>
<array>
@@ -1384,7 +1384,7 @@
<key>CFBundleExecutable</key>
<string>%EXECUTABLE</string>
<key>CFBundleGetInfoString</key>
- <string>${PRODUCTNAME} ${ABOUTBOXPRODUCTVERSION} %SOURCE</string>
+ <string>${PRODUCTNAME} ${ABOUTBOXPRODUCTVERSION} ${BUILDIDCWS}</string>
<key>CFBundleIconFile</key>
<string>main.icns</string>
<key>CFBundleShortVersionString</key>
diff --git a/sysui/desktop/macosx/makefile.mk b/sysui/desktop/macosx/makefile.mk
index 8a4a4705e99d..059b3b87bb46 100644
--- a/sysui/desktop/macosx/makefile.mk
+++ b/sysui/desktop/macosx/makefile.mk
@@ -54,12 +54,6 @@ CREATOR_TYPE=OOO2
EXECUTABLE=soffice
.ENDIF
-SOURCE=$(RSCREVISION)
-
-.IF "$(CWS_WORK_STAMP)" != ""
-CWS=[CWS:$(CWS_WORK_STAMP)]
-.ENDIF
-
.IF "$(WITH_LANG)"!=""
ULFDIR:=$(COMMONMISC)$/desktopshare
.ELSE # "$(WITH_LANG)"!=""
@@ -79,7 +73,7 @@ $(COMMONMISC)$/PkgInfo :
$(COMMONMISC)$/Info.plist : $$(@:f)
- sed -e "s|\%EXECUTABLE|${EXECUTABLE}|g" -e "s|\%SOURCE|[$(SOURCE)$(CWS)]|g" $< > $@
+ sed -e "s|\%EXECUTABLE|${EXECUTABLE}|g" $< > $@
$(COMMONBIN)$/InfoPlist_{$(alllangiso)}.zip : $(COMMONMISC)$/$$(@:b)/InfoPlist.strings
cd $(<:d) && zip ../$(@:f).$(INPATH) $(<:f)
diff --git a/sysui/desktop/mandriva/mandriva-menus.spec b/sysui/desktop/mandriva/mandriva-menus.spec
index 5be889e3924e..4c02c70d90c1 100644
--- a/sysui/desktop/mandriva/mandriva-menus.spec
+++ b/sysui/desktop/mandriva/mandriva-menus.spec
@@ -16,6 +16,8 @@ Requires: mandrake-release
Provides: openoffice.org3-desktop-integration
%define _unpackaged_files_terminate_build 0
+%define _binary_filedigest_algorithm 1
+%define _binary_payload w9.gzdio
%define menuversion %(echo %version|cut -d'.' -f 1-2)
%{?!update_menus:%define update_menus if [ -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi}
diff --git a/sysui/desktop/mimetypes/extension.desktop b/sysui/desktop/mimetypes/extension.desktop
index 795e82871414..80cadae7e9cb 100644
--- a/sysui/desktop/mimetypes/extension.desktop
+++ b/sysui/desktop/mimetypes/extension.desktop
@@ -6,4 +6,4 @@ Icon=extension
Type=MimeType
Patterns=*.oxt
MimeType=application/vnd.openofficeorg.extension
-Comment=Extension
+Comment=%PRODUCTNAME Extension
diff --git a/sysui/desktop/redhat/redhat-menus.spec b/sysui/desktop/redhat/redhat-menus.spec
index e153b55c3fd4..85e0a6a5d72c 100644
--- a/sysui/desktop/redhat/redhat-menus.spec
+++ b/sysui/desktop/redhat/redhat-menus.spec
@@ -11,6 +11,8 @@ BuildArch: noarch
Requires: redhat-release
Provides: openoffice.org3-desktop-integration
%define _unpackaged_files_terminate_build 0
+%define _binary_filedigest_algorithm 1
+%define _binary_payload w9.gzdio
%description
%productname desktop integration
diff --git a/sysui/desktop/suse/suse-menus.spec b/sysui/desktop/suse/suse-menus.spec
index 7280d9dbae8b..14dbcde0f5e2 100644
--- a/sysui/desktop/suse/suse-menus.spec
+++ b/sysui/desktop/suse/suse-menus.spec
@@ -14,6 +14,8 @@ Requires: /etc/SuSE-release
Conflicts: SunDesktopVersion
Provides: openoffice.org3-desktop-integration
%define _unpackaged_files_terminate_build 0
+%define _binary_filedigest_algorithm 1
+%define _binary_payload w9.gzdio
%description
%productname desktop integration
diff --git a/testautomation/dbaccess/optional/includes/frm_FormFilter.inc b/testautomation/dbaccess/optional/includes/frm_FormFilter.inc
index 7a73842c62eb..b8e3ccc2d896 100755
--- a/testautomation/dbaccess/optional/includes/frm_FormFilter.inc
+++ b/testautomation/dbaccess/optional/includes/frm_FormFilter.inc
@@ -205,7 +205,11 @@ testcase tFF_Navigator
elseif iSprache = 49 then
if FilterNavigator.getSelText <> "WIE '*value*'" then
warnlog "The text is not right in the filter navigator. It have to be WIE '*value*' but it is " + FilterNavigator.getSelText
- endif
+ endif
+ elseif iSprache = 50 then
+ if FilterNavigator.getSelText <> "LIKE '*value*'" then
+ warnlog "The text is not right in the filter navigator. It have to be LIKE '*value*' but it is " + FilterNavigator.getSelText
+ endif
elseif iSprache = 81 then
elseif iSprache = 82 then
diff --git a/testautomation/framework/optional/f_basic_vba-compat.bas b/testautomation/framework/optional/f_basic_vba-compat.bas
index 363e59c70cb4..3a6d41d3e0af 100755
--- a/testautomation/framework/optional/f_basic_vba-compat.bas
+++ b/testautomation/framework/optional/f_basic_vba-compat.bas
@@ -36,11 +36,13 @@ sub main
use "framework\optional\includes\basic_vba-compat_import_nothing.inc"
use "framework\optional\includes\basic_vba-compat_import_disabled.inc"
use "framework\optional\includes\basic_vba-compat_import_enabled.inc"
-
+ use "framework\optional\includes\basic_vba-compat_security_check.inc"
+
call hStatusIn( "framework" , "f_basic_vba-compat.bas" )
call tBasicVBACompatImportNothing()
call tBasicVBACompatImportDisabled()
call tBasicVBACompatImportEnabled()
+ call tBasicVBACompatSecurityCheck()
call hStatusOut()
end sub
@@ -54,6 +56,9 @@ sub LoadIncludeFiles
use "global\tools\includes\optional\t_basic_organizer_tools.inc"
use "global\tools\includes\optional\t_treelist_tools.inc"
+ use "global\tools\includes\optional\t_security_tools.inc"
+ use "global\tools\includes\optional\t_macro_tools.inc"
+ use "global\tools\includes\optional\t_docfuncs.inc"
use "framework\optional\includes\basic_vba_compat_tools.inc"
diff --git a/testautomation/framework/optional/includes/CJK_CollationDialogue_1.inc b/testautomation/framework/optional/includes/CJK_CollationDialogue_1.inc
index 98faef122a4c..0cab687d2f50 100644..100755
--- a/testautomation/framework/optional/includes/CJK_CollationDialogue_1.inc
+++ b/testautomation/framework/optional/includes/CJK_CollationDialogue_1.inc
@@ -52,6 +52,12 @@ testcase tLanguageTest_1
sKeyTypeTChinese = "Numerisch"
sKeyTypeJapanese = "Numerisch"
sKeyTypeKoren = "Numerisch"
+ case 50 :' Slovenian
+ sKeyTypeEnglishUSA = "AlfanumeriÄno"
+ sKeyTypeSChinese = "Nabor znakov"
+ sKeyTypeTChinese = "NumeriÄno"
+ sKeyTypeJapanese = "Nabor znakov"
+ sKeyTypeKoren = "Nabor znakov"
case 55 :' Brazilian
sKeyTypeEnglishUSA = "Alfanumérico"
sKeyTypeSChinese = "Conjunto de caracteres"
@@ -273,6 +279,12 @@ testcase tLanguageTest_2
sKeyTypeTChinese = "Numerisch"
sKeyTypeJapanese = "Numerisch"
sKeyTypeKoren = "Numerisch"
+ case 50 :' Slovenian
+ sKeyTypeEnglishUSA = "AlfanumeriÄno"
+ sKeyTypeSChinese = "Nabor znakov"
+ sKeyTypeTChinese = "NumeriÄno"
+ sKeyTypeJapanese = "Nabor znakov"
+ sKeyTypeKoren = "Nabor znakov"
case 55 :' Brazilian
sKeyTypeEnglishUSA = "numérico"
sKeyTypeSChinese = "numérico"
@@ -494,6 +506,8 @@ testcase tStrokeSort
sKeyTypeSChinese = "Stroke"
case 49 : ' German
sKeyTypeSChinese = "Stroke"
+ case 50 : ' Slovenian
+ sKeyTypeSChinese = "Poteza"
case 55 : ' Brazilian
sKeyTypeSChinese = "Traço"
case 81 : ' Japanese
@@ -582,6 +596,8 @@ testcase tPinyinSort
sKeyTypeSChinese = "Pinyin"
case 49 : ' German
sKeyTypeSChinese = "Pinyin"
+ case 50 : ' Slovenian
+ sKeyTypeSChinese = "Pinjin"
case 55 : ' Brazilian
sKeyTypeSChinese = "Pinyin"
case 81 : ' Japanese
diff --git a/testautomation/framework/optional/includes/CJK_RubyDialogueProposal_1.inc b/testautomation/framework/optional/includes/CJK_RubyDialogueProposal_1.inc
index 39c42fe75b8e..5b03be6151cb 100644..100755
--- a/testautomation/framework/optional/includes/CJK_RubyDialogueProposal_1.inc
+++ b/testautomation/framework/optional/includes/CJK_RubyDialogueProposal_1.inc
@@ -204,6 +204,7 @@ testcase tRubyDialog_4
case 39 : sCharacterStyle = "Testo Ruby"
case 46 : sCharacterStyle = "Rubytext"
case 49 : sCharacterStyle = "Rubys"
+ case 50 : sCharacterStyle = "Rubys"
case 55 : sCharacterStyle = "Rubys"
case 81 : sCharacterStyle = "ãµã‚ŠãŒãª"
case 82 : sCharacterStyle = "윗주 달기" ' not sure TBO
@@ -251,6 +252,7 @@ testcase tRubyDialog_5
case 39 : sCharacterStyle = "Testo Ruby"
case 46 : sCharacterStyle = "Rubytext"
case 49 : sCharacterStyle = "Rubys"
+ case 50 : sCharacterStyle = "Rubys"
case 55 : sCharacterStyle = "Rubys"
case 81 : sCharacterStyle = "ãµã‚ŠãŒãª"
case 82 : sCharacterStyle = "윗주 달기" ' not sure TBO was "ë§ë§"
diff --git a/testautomation/framework/optional/includes/basic_issues.inc b/testautomation/framework/optional/includes/basic_issues.inc
index 0c38e743fb93..3fec49f61fbe 100644..100755
--- a/testautomation/framework/optional/includes/basic_issues.inc
+++ b/testautomation/framework/optional/includes/basic_issues.inc
@@ -54,7 +54,7 @@ function hTestActive( cString as string , iMethod as integer , bExact as boolean
' 1 - 4 = Number of buttons on the dialog
' internal states, if state = 0 we return the buttoncount instead
- const STATE_SUCCESS = 0
+ const STATE_SUCCESS = 0
const STATE_FUZZY_MATCH = -1
const STATE_NO_MATCH = -2
const STATE_IGNORE_MSGBOX = -3
@@ -111,6 +111,17 @@ end function
testcase t_macros()
+ const RESTYPE_1 = 1
+ const RESTYPE_2 = 2
+ const RESTYPE_3 = 3
+
+ const CLOSE_METHOD_OK = 1
+ const CLOSE_METHOD_CANCEL = 2
+ const CLOSE_METHOD_NO = 4
+
+ const REQUIRES_EXACT_MATCH = TRUE
+ const REQUIRES_FUZZY_MATCH = FALSE
+
gApplication = "WRITER"
call hNewDocument()
hInitBasicIDE( "TestIssues" )
@@ -119,113 +130,126 @@ testcase t_macros()
printlog( " ---------- i41695 ------------ " )
hInsertMacroFromFile( "i41695" )
hIDERunMacro()
- hTestActive( "i41695-1", 1 , TRUE )
- hTestActive( "i41695-2", 1 , TRUE )
+ hTestActive( "i41695-1", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+ hTestActive( "i41695-2", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
printlog( "" )
printlog( " ---------- i83978 ------------ " )
hInsertMacroFromFile( "i83978" )
hIDERunMacro()
- hTestActive( "com.sun.star.container.NoSuchElementException", 1 , FALSE )
+ hTestActive( "NoSuchElementException", CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
printlog( "" )
printlog( " ---------- i82830 ------------ " )
hInsertMacroFromFile( "i82830" )
hIDERunMacro()
- hTestActive( "12D687" , 1 , TRUE )
- hTestActive( "4553207", 1 , TRUE )
+ hTestActive( "12D687" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+ hTestActive( "4553207", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
if ( gISOLang = "en-US" ) then
printlog( "" )
printlog( " ---------- i81674 ------------ " )
hInsertMacroFromFile( "i81674" )
hIDERunMacro()
- hTestActive( "250" , 1 , FALSE )
- hTestActive( "Yes" , 1 , TRUE )
- hTestActive( "True", 1 , TRUE )
- hTestActive( "On" , 1 , TRUE )
+ hTestActive( "250" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "Yes" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+ hTestActive( "True", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+ hTestActive( "On" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
endif
printlog( "" )
printlog( " ---------- i80532 ------------ " )
hInsertMacroFromFile( "i80532" )
hIDERunMacro()
- hTestActive( "-10", 1 , FALSE )
- hTestActive( "1" , 1 , FALSE )
- hTestActive( "-10", 1 , FALSE )
+ hTestActive( "-10", CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "1" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "-10", CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
printlog( "" )
printlog( " ---------- i84040 ------------ " )
hInsertMacroFromFile( "i84040" )
hIDERunMacro()
- hTestActive( "False", 1 , TRUE )
- hTestActive( "False", 1 , TRUE )
+ hTestActive( "False", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+ hTestActive( "False", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
printlog( "" )
printlog( " ---------- i86265 ------------ " )
hInsertMacroFromFile( "i86265" )
hIDERunMacro()
- hTestActive( "i86265-1", 1 , TRUE )
- hTestActive( "i86265-2", 1 , TRUE )
+ hTestActive( "i86265-1", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+ hTestActive( "i86265-2", CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
printlog( "" )
printlog( " ---------- i92329 ------------ " )
hInsertMacroFromFile( "i92329" )
hIDERunMacro()
- hTestActive( "Return an Array" , 1 )
+ hTestActive( "Return an Array" , CLOSE_METHOD_OK )
printlog( "" )
printlog( " ---------- i97038 ------------ " )
hInsertMacroFromFile( "i97038" )
hIDERunMacro()
- hTestActive( "1900" , 1 , FALSE )
- hTestActive( "2" , 1 , FALSE )
+ hTestActive( "1900" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "2" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
printlog( "" )
printlog( " ---------- i103691 ------------ " )
hInsertMacroFromFile( "i103691" )
hIDERunMacro()
- hTestActive( "Equal" , 1 , FALSE )
+ hTestActive( "Equal" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
printlog( "" )
printlog( " ---------- i103697 ------------ " )
hInsertMacroFromFile( "i103697" )
hIDERunMacro()
- hTestActive( "i103697" , 1 , FALSE )
+ hTestActive( "i103697" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
printlog( "" )
printlog( " ---------- i103990 ------------ " )
hInsertMacroFromFile( "i103990" )
hIDERunMacro()
- hTestActive( "42" , 1 , FALSE )
- hTestActive( "43" , 1 , FALSE )
- hTestActive( "Pi" , 1 , FALSE )
+ hTestActive( "42" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "43" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "Pi" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
printlog( "" )
printlog( " ---------- i107070 ------------ " )
hInsertMacroFromFile( "i107070" )
hIDERunMacro()
- hTestActive( "Dbg_Methods" , 1 , FALSE )
- hTestActive( "Dbg_Methods" , 1 , FALSE )
- hTestActive( "." , 1 , FALSE )
+ hTestActive( "Dbg_Methods" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "Dbg_Methods" , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+ hTestActive( "." , CLOSE_METHOD_OK , REQUIRES_FUZZY_MATCH )
+
+ printlog( "" )
+ printlog( " ---------- i106744 ------------ " )
+ hInsertMacroFromFile( "i106744-1" )
+ hIDERunMacro()
+ hTestActive( "NOT EMPTY" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
+
+ printlog( "" )
+ printlog( " ---------- i106744 ------------ " )
+ hInsertMacroFromFile( "i106744-2" )
+ hIDERunMacro()
+ hTestActive( "NOT EMPTY" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH )
printlog( "" )
printlog( " ---------- MessageBoxes ------------ " )
hInsertMacroFromFile( "MessageBoxes" )
hIDERunMacro()
- if ( hTestActive( "0x" , 1 , TRUE ) > 1 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "1x" , 1 , TRUE ) > 2 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "2x" , 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "3x" , 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "4x" , 4 , TRUE ) > 2 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "5x" , 2 , TRUE ) > 2 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "16" , 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "32" , 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "48" , 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "64" , 1 , TRUE ) > 1 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "128", 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "256", 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
- if ( hTestActive( "512", 2 , TRUE ) > 3 ) then warnlog( "Wrong resource type" )
+
+ if ( hTestActive( "0x" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH ) <> RESTYPE_1 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "1x" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH ) <> RESTYPE_2 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "2x" , CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "3x" , CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "4x" , CLOSE_METHOD_NO , REQUIRES_EXACT_MATCH ) <> RESTYPE_2 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "5x" , CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_2 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "16" , CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "32" , CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "48" , CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "64" , CLOSE_METHOD_OK , REQUIRES_EXACT_MATCH ) <> RESTYPE_1 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "128", CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "256", CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
+ if ( hTestActive( "512", CLOSE_METHOD_CANCEL , REQUIRES_EXACT_MATCH ) <> RESTYPE_3 ) then warnlog( "Wrong resource type" )
printlog( "" )
hCloseBasicIDE()
diff --git a/testautomation/framework/optional/includes/basic_vba-compat_security_check.inc b/testautomation/framework/optional/includes/basic_vba-compat_security_check.inc
new file mode 100644
index 000000000000..ae26d996db6e
--- /dev/null
+++ b/testautomation/framework/optional/includes/basic_vba-compat_security_check.inc
@@ -0,0 +1,105 @@
+'encoding UTF-8 Do not remove or change this line!
+'*******************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org 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 version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : joerg.skottke@sun.com
+'*
+'* short description : Test VBA compatibility switches
+'*
+'\******************************************************************************
+
+testcase tBasicVBACompatSecurityCheck()
+
+ printlog( "Test VBA Security feature" )
+ printlog( "VBA macros may not ignore global macro security setting" )
+
+ ' This test case is based on the use cases provided in issue #i109699
+
+ const IMPORT_EXCEL_MACROS = TRUE
+ const EXEC_EXCEL_MACROS = TRUE
+
+ const MACRO_IDENTIFICATION_MESSAGE = "Clicked"
+ const MACRO_NAME = "CommandButton1_Click"
+
+ const WORK_FILE = "framework/optional/input/vba-compat/Book1.xls"
+
+ dim cTestFile as string : cTestFile = gTesttoolPath & WORK_FILE
+ dim iSecurityLevel as integer
+
+
+ printlog( "Set VBA macro handling to import and execute" )
+ hSetExcelBasicImportMode( IMPORT_EXCEL_MACROS, EXEC_EXCEL_MACROS )
+
+ for iSecurityLevel = GC_MACRO_SECURITY_LEVEL_MEDIUM to GC_MACRO_SECURITY_LEVEL_VERYHIGH
+
+ printlog( "Adjust security level" )
+ hSetMacroSecurityAPI( iSecurityLevel )
+
+ printlog( "Load the test file" )
+ hFileOpen( cTestFile )
+
+ printlog( "Deny macro execution or close macros blocked message" )
+ if ( iSecurityLevel = GC_MACRO_SECURITY_LEVEL_MEDIUM ) then
+ hDenyMacroExecution()
+ else
+ kontext "Active"
+ Active.ok()
+ endif
+
+ printlog( "Try to execute macro via macro organizer" )
+ hMacroOrganizerRunMacro( MACRO_NAME )
+
+ printlog( "Probe for warning message (or macro)" )
+ kontext "Active"
+ if ( Active.exists( 2 ) ) then
+ if ( Active.getText() = MACRO_IDENTIFICATION_MESSAGE ) then
+ warnlog( "Macro was executed though macro execution has been denied" )
+ Active.ok()
+ else
+ printlog( "Macro execution blocked - warning is displayed." )
+ Active.ok()
+ endif
+ else
+ warnlog( "No warning message for blocked macro execution" )
+ endif
+
+ ' recover silently, the warnings above should say it all.
+ kontext "Makro"
+ if ( Makro.exists() ) then Makro.cancel()
+
+ printlog( "Close file" )
+ hDestroyDocument()
+
+ next iSecurityLevel
+
+ printlog( "Reset VBA import options to default" )
+ hSetExcelImportModeDefault()
+
+ printlog( "Reset macro security level to default" )
+ hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_DEFAULT )
+
+endcase
+
diff --git a/testautomation/framework/optional/includes/configuration.inc b/testautomation/framework/optional/includes/configuration.inc
index 68c0aaf79082..fba0a6fe6bae 100644..100755
--- a/testautomation/framework/optional/includes/configuration.inc
+++ b/testautomation/framework/optional/includes/configuration.inc
@@ -253,8 +253,8 @@ testcase tToolsOptionsAPIConfiguration
case 07 : iJump = 0 ' Russian
case 30 : iJump = 0 ' Greek
case 31 : iJump = 0 ' Netherlands
- case 33 : iJump = 0 ' French
- case 34 : iJump = 0 ' Spanish
+ case 33 : iJump = 0 ' French
+ case 34 : iJump = 0 ' Spanish
case 35 : iJump = 0 ' Finnish
case 36 : iJump = 0 ' Hungaria
case 37 : iJump = 0 ' Catalan
@@ -263,20 +263,21 @@ testcase tToolsOptionsAPIConfiguration
case 43 : iJump = 0 ' Slowak
case 44 : iJump = 0 ' English (GB)
case 45 : iJump = 0 ' Danish
- case 46 : iJump = 0 ' Swedish
+ case 46 : iJump = 0 ' Swedish
case 47 : iJump = 0 ' Norwegian
case 48 : iJump = 0 ' Polish
case 49 : iJump = 1 ' German
case 51 : iJump = 0 ' Slowak
- case 55 : iJump = 0 ' Portuguese (Brazil)
- case 66 : iJump = 0 ' Thai
+ case 50 : iJump = 0 ' Slovenian
+ case 55 : iJump = 0 ' Portuguese (Brazil)
+ case 66 : iJump = 0 ' Thai
case 81 : iJump = 0 ' Japanese ' disabled, because locale dependant!
case 82 : iJump = 0 ' Korean ' disabled, because locale dependant!
case 86 : iJump = 0 ' Chinese (simplified) ' disabled, because locale dependant!
case 88 : iJump = 0 ' Chinese (traditional) ' disabled, because locale dependant!
case 90 : iJump = 0 ' Turkish
case 91 : iJump = 0 ' Hindi
- case 96 : iJump = 0 ' Arab
+ case 96 : iJump = 0 ' Arab
case 97 : iJump = 0 ' Hebrew
case else : qaErrorlog "The work-dir can't changed to the internal office-work-dir! Please insert the language in this list!"
iJump = 0
diff --git a/testautomation/framework/optional/input/vba-compat/Book1.xls b/testautomation/framework/optional/input/vba-compat/Book1.xls
new file mode 100644
index 000000000000..425c2e0687b0
--- /dev/null
+++ b/testautomation/framework/optional/input/vba-compat/Book1.xls
Binary files differ
diff --git a/testautomation/framework/required/includes/printer_administration.inc b/testautomation/framework/required/includes/printer_administration.inc
index bc9838f6063d..a05ecc6b02a1 100644..100755
--- a/testautomation/framework/required/includes/printer_administration.inc
+++ b/testautomation/framework/required/includes/printer_administration.inc
@@ -103,8 +103,6 @@ testcase t_updt_spadmin
warnlog( "SpAdmin is not open, the test cannot continue" )
goto endsub
endif
-
- call TestFonts( CPRINTER )
' wait for the spadmin to open, on failure we end the test
brc = hWaitForSpAdmin()
@@ -270,42 +268,4 @@ sub TestRename( cPrinter as string )
printlog( "" )
-end sub
-
-'*******************************************************************************
-
-sub TestFonts( cPrinter as string )
-
-
- printlog( " * Open 'Fonts...' dialog" )
-
- Kontext "SpAdmin"
- if ( PBFonts.isEnabled() ) then
- PBFonts.click()
- waitslot
-
- printlog( " * Test the font-dialog" )
- Kontext "SPFontNameDLG"
- call dialogtest( SPFontNameDLG )
-
- printlog( " * Press 'Add ...'" )
- PBAdd.click()
- waitslot
-
- printlog( " * Test the import-dialog" )
- kontext "SPFontImportDLG"
- call dialogtest( SPFontImportDLG )
-
- printlog( " * close import dialog" )
- SPFontImportDLG.cancel()
-
- Kontext "SPFontNameDLG"
- printlog( " * close fonts-dialog" )
- SPFontNameDLG.ok()
- waitslot
- else
- printlog( "Fonts... not available, skipping." )
- endif
-
-
-end sub
+end sub \ No newline at end of file
diff --git a/testautomation/framework/tools/includes/CJK_tools.inc b/testautomation/framework/tools/includes/CJK_tools.inc
index bea675f69bc3..e905b55bbebc 100644..100755
--- a/testautomation/framework/tools/includes/CJK_tools.inc
+++ b/testautomation/framework/tools/includes/CJK_tools.inc
@@ -211,6 +211,23 @@ function fGetCountryName( CountryID as Integer ) as String
QAErrorLog "Now, the test does not support for the language " +iSprache
fGetCountryName = ""
end select
+ case 50 : ' Slovenian
+ select case CountryID
+ case 1: fGetCountryName = "angleški (ZDA)"
+ case 33: fGetCountryName = "francoski (Francija)"
+ case 34: fGetCountryName = "Å¡panski (Å panija)"
+ case 39: fGetCountryName = "italijanski (Italija)"
+ case 46: fGetCountryName = "Å¡vedski (Å vedska)"
+ case 49: fGetCountryName = "nemÅ¡ki (NemÄija)"
+ case 55: fGetCountryName = "portugalski (Brazilija)"
+ case 81: fGetCountryName = "japonski"
+ case 82: fGetCountryName = "korejski (RK)"
+ case 86: fGetCountryName = "kitajski (poenostavljeni)"
+ case 88: fGetCountryName = "kitajski (tradicionalni)"
+ case else :
+ QAErrorLog "Now, the test does not support for the language " +iSprache
+ fGetCountryName = ""
+ end select
case 55 : ' Portuguese
select case CountryID
case 1: fGetCountryName = "Inglês (EUA)"
diff --git a/testautomation/framework/tools/input/i18ndata.txt b/testautomation/framework/tools/input/i18ndata.txt
index 5e10d47c33c9..f8b9f88410a9 100755
--- a/testautomation/framework/tools/input/i18ndata.txt
+++ b/testautomation/framework/tools/input/i18ndata.txt
@@ -15,6 +15,7 @@
46=swedish
48=polish
49=german
+50=slovenian
55=portuguese brazilian
81=japanese
82=korean
@@ -36,6 +37,7 @@
46=sv
48=pl
49=de
+50=sl
55=pt-BR
81=ja
82=ko
diff --git a/testautomation/global/input/macros.txt b/testautomation/global/input/macros.txt
index ffe95be431e3..e0423fec3858 100755
--- a/testautomation/global/input/macros.txt
+++ b/testautomation/global/input/macros.txt
@@ -279,3 +279,48 @@ Sub Main
' Uncommenting this should result in an error "Invalid procedure call"
oInstanceErr1 = oSingleton.get( 42 )
End Sub
+
+# ---------------------------------------------------------------------------- #
+
+[i106744-1]
+sub main
+ msgbox test1()
+end sub
+
+Function test1() As String
+
+ Dim foo As String : foo = "astring"
+
+ On Error Resume Next
+ test1 = "GOT ERROR"
+ If IsEmpty(foo) Then
+ test1 = "EMPTY"
+ Else
+ test1 = "NOT EMPTY"
+ End If
+
+End Function
+
+# ---------------------------------------------------------------------------- #
+
+[i106744-2]
+option VBASupport 1
+
+sub main
+ msgbox test1()
+end sub
+
+Function test1() As String
+
+ Dim foo As String : foo = "astring"
+
+ On Error Resume Next
+ test1 = "GOT ERROR"
+ If IsEmpty(foo) Then
+ test1 = "EMPTY"
+ Else
+ test1 = "NOT EMPTY"
+ End If
+
+End Function
+
diff --git a/testautomation/global/input/officeinfo.txt b/testautomation/global/input/officeinfo.txt
index dc334737d048..92b4e492740d 100644..100755
--- a/testautomation/global/input/officeinfo.txt
+++ b/testautomation/global/input/officeinfo.txt
@@ -3,4 +3,5 @@ StarOffice=9
StarSuite=9
OpenOffice.org=3.1
BrOffice.org=3.1
+Oracle Open Office=3.2
diff --git a/testautomation/global/system/includes/iniinfo.inc b/testautomation/global/system/includes/iniinfo.inc
index 10831114d1e3..8a2807269152 100755
--- a/testautomation/global/system/includes/iniinfo.inc
+++ b/testautomation/global/system/includes/iniinfo.inc
@@ -120,12 +120,14 @@ sub GetIniInformation
gOOoStartupTimeOut = fgetOOoStartupTimeOut()
gOOoShutdownTimeOut = fgetOOoShutdownTimeOut()
call sCheckValgrindStatus()
+ ' set a global path for custom scripts, like basepath, but outside of current environment
gPrivateEnvironmentLocation = getIniValue(gTesttoolIni, "PrivateEnvironment", "Current")
- sTemp = ConvertPath (gTestToolPath + gPrivateEnvironmentLocation + "inc/privateenvironment.inc")
- if fileExists(sTemp) then
- use sTemp
- call getUseFilesPrivateEnvironment
- else
+ if (gPrivateEnvironmentLocation <> "" AND gPrivateEnvironmentLocation <> ".") then
+ if NOT fileExists(gPrivateEnvironmentLocation) then
+ qaErrorLog "[PrivateEnvironment] defined in: '"+gTesttoolIni+"', but the path '"+gPrivateEnvironmentLocation+"'does not exist!"
+ else
+ gPrivateEnvironmentLocation = ""
+ end if
gPrivateEnvironmentLocation = ""
end if
end sub
@@ -334,6 +336,7 @@ sub GetLanguageInformation
case "no_no", "no-no", "no" : iSprache = 47 ' Norwegian
case "pl_pl", "pl-pl", "pl" : iSprache = 48 ' Polish
case "de_de", "de-de", "de" : iSprache = 49 ' German
+ case "sl_si", "sl-si", "sl" : iSprache = 50 ' Slovenian
case "sr_rs", "sr-rs", "sr" : iSprache = 51 ' Serbian (Cyrillic)
case "sh_rs", "sh-rs", "sh" : iSprache = 52 ' Serbian (Latin)
case "pt_br", "pt-br", "br" : iSprache = 55 ' Portuguese (Brazil)
@@ -347,7 +350,6 @@ sub GetLanguageInformation
case "hi_in", "hi-in", "hi" : iSprache = 91 ' Hindi
case "ar_ar", "ar-ar", "ar" : iSprache = 96 ' Arabic
case "he_he", "he-he", "he" : iSprache = 97 ' Hebrew
- case "sl_si", "sl-si", "sl" : iSprache = 386 ' Slovenian
case "zz_zz", "zz-zz", "zz" : iSprache = 01 ' unknown
warnlog "iniinfo.inc::GetLanguageInformation()"
warnlog "- sLanOutIni = " & sLanOutIni & " (unknown language)"
@@ -397,7 +399,8 @@ function ConvertLanguage ( Sprache as String ) as Integer
case "daenisch", "danish" : ConvertLanguage = 45
case "schwedisch", "swedish" : ConvertLanguage = 46
case "norwegian", "norwegisch" : ConvertLanguage = 47
- case "polnisch", "polish" : ConvertLanguage = 48
+ case "polnisch", "polish" : ConvertLanguage = 48
+ case "slovenian", "slovenisch" : ConvertLanguage = 50
case "serbisch kyrillisch", "serbian cyrillic" : ConvertLanguage = 51
case "serbisch latein", "serbian latin" : ConvertLanguage = 52
case "japanisch", "japanese" : ConvertLanguage = 81
@@ -408,7 +411,6 @@ function ConvertLanguage ( Sprache as String ) as Integer
case "tuerkisch", "turkish" : ConvertLanguage = 90
case "arabisch", "arab" : ConvertLanguage = 96
case "catalan", "katalanisch" : ConvertLanguage = 99
- case "slovenian", "slovenisch" : ConvertLanguage = 386
end select
end function
@@ -436,6 +438,7 @@ function GetLanguageText ( iLan ) as String
case 47 : GetLanguageText = "Norwegian"
case 48 : GetLanguageText = "Polnish"
case 49 : GetLanguageText = "German"
+ case 50 : GetlanguageText = "Slovenian"
case 51 : GetlanguageText = "Serbian (Cyrillic)"
case 52 : GetlanguageText = "Serbian (Latin)"
case 55 : GetLanguageText = "Portuguese (Brazil)"
@@ -450,7 +453,6 @@ function GetLanguageText ( iLan ) as String
case 96 : GetLanguageText = "Arabic"
case 97 : GetLanguageText = "Hebrew"
case 99 : GetLanguageText = "Unknown"
- case 386 : GetlanguageText = "Slovenian"
case else : GetLanguageText = "detection failed"
end select
end function
@@ -480,6 +482,7 @@ function ConvertLanguage2 ( sSprache as String, optional bExact ) as Integer
case "no_no", "no-no", "no" : ConvertLanguage2 = 47 ' Norwegian
case "pl_pl", "pl-pl", "pl" : ConvertLanguage2 = 48 ' Polish
case "de_de", "de-de", "de" : ConvertLanguage2 = 49 ' German
+ case "sl_si", "sl-si", "sl" : ConvertLanguage2 = 50 ' Slovenian
case "sr_rs", "sr_rs", "sr" : ConvertLanguage2 = 51 ' Serbian (Cyrillic)
case "sh_rs", "sh_rs", "sh" : ConvertLanguage2 = 52 ' Serbian (Latin)
case "pt_br", "pt-br", "br" : ConvertLanguage2 = 55 ' Portuguese (Brazil)
@@ -493,7 +496,6 @@ function ConvertLanguage2 ( sSprache as String, optional bExact ) as Integer
case "hi_in", "hi-in", "hi" : ConvertLanguage2 = 91 ' Hindi
case "ar_ar", "ar-ar", "ar" : ConvertLanguage2 = 96 ' Arabic
case "he_he", "he-he", "he" : ConvertLanguage2 = 97 ' Hebrew
- case "sl_si", "sl-si", "sl" : ConvertLanguage2 = 386
case "zz_zz", "zz-zz", "zz" : ConvertLanguage2 = 01 ' unknown
case else : if isMissing (bExact) then
printlog "iniinfo.inc::ConvertLanguage2(): Unknown systemlanguage '" & sSprache & "'!"
@@ -535,6 +537,7 @@ function ConvertCodeToLanguage ( sSprache as String ) as Integer
case "2047" : ConvertCodeToLanguage = 47 ' Norwegian
case "1045" : ConvertCodeToLanguage = 48 ' Polish
case "1031" : ConvertCodeToLanguage = 49 ' German
+ case "1060" : ConvertCodeToLanguage = 50 ' Slovenian
case " " : ConvertCodeToLanguage = 55 ' Portuguese (Brazil)
case "3098" : ConvertCodeToLanguage = 51 ' Serbian (Cyriliic)
case "2074" : ConvertCodeToLanguage = 52 ' Serbian (Latin)
@@ -548,7 +551,6 @@ function ConvertCodeToLanguage ( sSprache as String ) as Integer
' case " " : ConvertCodeToLanguage = 91 ' Hindi
case "1025" : ConvertCodeToLanguage = 96 ' Arabic
' case " " : ConvertCodeToLanguage = 97 ' Hebrew
- case "1060" : ConvertCodeToLanguage = 386 ' Slovenian
case else : printlog "iniinfo.inc::ConvertCodeToLanguage(): Num. Code could not be detect or is unknown and will be set to 01 (English (USA))!"
ConvertCodeToLanguage = 01
end select
diff --git a/testautomation/global/system/includes/master.inc b/testautomation/global/system/includes/master.inc
index d349c3737d91..9e693eea445e 100755
--- a/testautomation/global/system/includes/master.inc
+++ b/testautomation/global/system/includes/master.inc
@@ -102,35 +102,6 @@ sub GetUseFiles
gTestToolPath = gRemotePath
end if
-'/// Load private environment dependant settings
-'/// BaseDirectory is the setting from the TestTool application at Extra->Settings->Profile->Base directory
-'/// This path is available in the global variable: gTestToolPath
-'/// The private environment location directory is taken from the file BaseDirectory+errorlog/privateenvironment.txt
-'/// The default file is taken from cvs: qa/qatesttool/errorlog/privateenvironment.txt
-'/// The default content is:
-'/// >[PrivateEnvironment]
-'/// >Current=global/private/
-'/// The path is defined relative to BaseDirectory and put into the global variable: gPrivateEnvironmentLocation
-'/// At the resulting path of BaseDirectory + gPrivateEnvironmentLocation + 'inc/' there has to exist the file: privateenvironment.inc
-'/// with at least the sub: getUseFilesPrivateEnvironment which will get executed
-
- if (gPrivateEnvironmentLocation = "") then
- sPrivateEnvironmentLocation = ConvertPath (gTestToolPath + "errorlog\privateenvironment.txt")
- if fileExists(sPrivateEnvironmentLocation) then
- gPrivateEnvironmentLocation = getIniValue(sPrivateEnvironmentLocation, "PrivateEnvironment", "Current")
- ' TODO: remove trailing path character
- else
- gPrivateEnvironmentLocation = "global/private/"
- end if
- sTemp = ConvertPath (gTestToolPath + gPrivateEnvironmentLocation + "inc/privateenvironment.inc")
- if fileExists(sTemp) then
- use sTemp
- call getUseFilesPrivateEnvironment
- else
- 'qaErrorLog "Private Environment Control File Location specified in '" + sPrivateEnvironmentLocation + "', but the file doesn't exist: '" +sTemp+ "'"
- end if
- end if
-
' Check if environment works with this OOo version
'/// Control the behaviour of the environment via the file qa/qatesttool/global/version.txt:
'/// [EnvironmentVersion]
diff --git a/testautomation/global/system/includes/status.inc b/testautomation/global/system/includes/status.inc
index 49d3a836043a..bf1ba6a74416 100644..100755
--- a/testautomation/global/system/includes/status.inc
+++ b/testautomation/global/system/includes/status.inc
@@ -271,8 +271,7 @@ sub hStatusWriteOutputFirstFile ()
sPlat = "win"
end if
- slVersion() = Split(gProductName, " ") '(15)
- sProduct = slVersion(0)
+ sProduct = gProductName '(15)
' major is from start to 'm'
iPosA = 1
diff --git a/testautomation/global/tools/includes/optional/t_locale_strings1.inc b/testautomation/global/tools/includes/optional/t_locale_strings1.inc
index 12bc913d3bf4..d3e7708dbd30 100644..100755
--- a/testautomation/global/tools/includes/optional/t_locale_strings1.inc
+++ b/testautomation/global/tools/includes/optional/t_locale_strings1.inc
@@ -371,7 +371,33 @@ function fLocaleString (sReturn as string) as string
sLocaleNumFormLanEng = "Englisch (USA)"
sLocaleNumFormLanLith = "Litauisch"
sLocaleNumFormLanDutch = "Niederländisch (Niederlande)"
-
+
+ case 50 : sLocaleTableHeading = "Glava tabele" ' Slovenian
+ sLocaleTableContents = "Vsebina tabele"
+ sLocaleNumber = "Å tevilo"
+ sLocaleText = "Besedilo"
+ sLocaleCurrency = "Valuta"
+ sLocaleDate = "Datum"
+ sLocaleTime = "ÄŒas"
+ sLocalePercent = "Odstotek"
+ sLocaleScientific = "Znanstveno"
+ sLocaleFraction = "Ulomek"
+ sLocaleBoolean = "Dvojiška vrednost"
+ sLocaleTable = "Tabela"
+ sLocaleCurrencyValue = "10,00 €"
+ sLocaleDateValue = "31.03.06"
+ sLocaleDateOutput = "31.03.06"
+ sLocaleTimeInput = "15:42"
+ sLocaleTimeValue = "15:42:00"
+ slocalePercentValue = "14,00%"
+ sLocaleScientificValue = "1,00E+008"
+ sLocaleBooleanValue = "TRUE"
+ sLocaleLocaleSettings = "angleški (ZDA)"
+ sLocaleScriptType = "Zahodni"
+ sLocaleNumFormLanEng = "angleški (ZDA)"
+ sLocaleNumFormLanLith = "litovski"
+ sLocaleNumFormLanDutch = "nizozemski (Nizozemska)"
+
case 55 : sLocaleTableHeading = "Título da tabela" ' Brazil (Portuguese)
sLocaleTableContents = "Conteudo da table"
sLocaleNumber = "Número"
diff --git a/testautomation/global/tools/includes/optional/t_toolbar_tools1.inc b/testautomation/global/tools/includes/optional/t_toolbar_tools1.inc
index 674ddd7e65e2..0bd7ae50525f 100644..100755
--- a/testautomation/global/tools/includes/optional/t_toolbar_tools1.inc
+++ b/testautomation/global/tools/includes/optional/t_toolbar_tools1.inc
@@ -93,6 +93,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "3D-Settings"
case 46 : fGetToolbarName = "3D-Settings"
case 49 : fGetToolbarName = "3D-Einstellungen"
+ case 50 : fGetToolbarName = "Nastavitve 3D"
case 55 : fGetToolbarName = "3D-Settings"
case 81 : fGetToolbarName = "3D-Settings"
case 82 : fGetToolbarName = "3D-Settings"
@@ -110,6 +111,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Align"
case 46 : fGetToolbarName = "Align"
case 49 : fGetToolbarName = "Ausrichten"
+ case 50 : fGetToolbarName = "Poravnava"
case 55 : fGetToolbarName = "Align"
case 81 : fGetToolbarName = "Align"
case 82 : fGetToolbarName = "Align"
@@ -127,6 +129,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Basic Shapes"
case 46 : fGetToolbarName = "Basic Shapes"
case 49 : fGetToolbarName = "Standardformen"
+ case 50 : fGetToolbarName = "Osnovni liki"
case 55 : fGetToolbarName = "Basic Shapes"
case 81 : fGetToolbarName = "Basic Shapes"
case 82 : fGetToolbarName = "Basic Shapes"
@@ -144,6 +147,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Block Arrows"
case 46 : fGetToolbarName = "Block Arrows"
case 49 : fGetToolbarName = "Blockpfeile"
+ case 50 : fGetToolbarName = "Votle puÅ¡Äice"
case 55 : fGetToolbarName = "Block Arrows"
case 81 : fGetToolbarName = "Block Arrows"
case 82 : fGetToolbarName = "Block Arrows"
@@ -161,6 +165,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Bullets and Numbering"
case 46 : fGetToolbarName = "Bullets and Numbering"
case 49 : fGetToolbarName = "Nummerierung und Aufzählungszeichen"
+ case 50 : fGetToolbarName = "Oznake in oÅ¡tevilÄevanje"
case 55 : fGetToolbarName = "Bullets and Numbering"
case 81 : fGetToolbarName = "Bullets and Numbering"
case 82 : fGetToolbarName = "Bullets and Numbering"
@@ -178,6 +183,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Database Form Design"
case 46 : fGetToolbarName = "Database Form Design"
case 49 : fGetToolbarName = "Datenbank Formularentwurf"
+ case 50 : fGetToolbarName = "Oblikovanje obrazca zbirke podatkov"
case 55 : fGetToolbarName = "Database Form Design"
case 81 : fGetToolbarName = "Database Form Design"
case 82 : fGetToolbarName = "Database Form Design"
@@ -195,6 +201,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Drawing"
case 46 : fGetToolbarName = "Drawing"
case 49 : fGetToolbarName = "Zeichnen"
+ case 50 : fGetToolbarName = "Risba"
case 55 : fGetToolbarName = "Drawing"
case 81 : fGetToolbarName = "Drawing"
case 82 : fGetToolbarName = "Drawing"
@@ -212,6 +219,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Drawing Object Properties"
case 46 : fGetToolbarName = "Drawing Object Properties"
case 49 : fGetToolbarName = "Zeichnungsobjekt-Eigenschaften"
+ case 50 : fGetToolbarName = "Lastnosti risanega predmeta"
case 55 : fGetToolbarName = "Drawing Object Properties"
case 81 : fGetToolbarName = "Drawing Object Properties"
case 82 : fGetToolbarName = "Drawing Object Properties"
@@ -229,6 +237,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Form Design"
case 46 : fGetToolbarName = "Form Design"
case 49 : fGetToolbarName = "Formular Entwurf"
+ case 50 : fGetToolbarName = "Oblikovanje obrazca"
case 55 : fGetToolbarName = "Form Design"
case 81 : fGetToolbarName = "Form Design"
case 82 : fGetToolbarName = "Form Design"
@@ -246,6 +255,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Formatting"
case 46 : fGetToolbarName = "Formatting"
case 49 : fGetToolbarName = "Format"
+ case 50 : fGetToolbarName = "Oblikovanje"
case 55 : fGetToolbarName = "Formatting"
case 81 : fGetToolbarName = "Formatting"
case 82 : fGetToolbarName = "Formatting"
@@ -263,6 +273,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Frame"
case 46 : fGetToolbarName = "Frame"
case 49 : fGetToolbarName = "Rahmen"
+ case 50 : fGetToolbarName = "Okvir"
case 55 : fGetToolbarName = "Frame"
case 81 : fGetToolbarName = "Frame"
case 82 : fGetToolbarName = "Frame"
@@ -280,6 +291,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Insert"
case 46 : fGetToolbarName = "Insert"
case 49 : fGetToolbarName = "Einfügen"
+ case 50 : fGetToolbarName = "Vstavi"
case 55 : fGetToolbarName = "Insert"
case 81 : fGetToolbarName = "Insert"
case 82 : fGetToolbarName = "Insert"
@@ -297,6 +309,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "OLE-Object"
case 46 : fGetToolbarName = "OLE-Object"
case 49 : fGetToolbarName = "OLE Objekt"
+ case 50 : fGetToolbarName = "Predmet OLE"
case 55 : fGetToolbarName = "OLE-Object"
case 81 : fGetToolbarName = "OLE-Object"
case 82 : fGetToolbarName = "OLE-Object"
@@ -314,6 +327,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Standard"
case 46 : fGetToolbarName = "Standard"
case 49 : fGetToolbarName = "Standard"
+ case 50 : fGetToolbarName = "Standardno"
case 55 : fGetToolbarName = "Standard"
case 81 : fGetToolbarName = "Standard"
case 82 : fGetToolbarName = "Standard"
@@ -331,6 +345,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Table"
case 46 : fGetToolbarName = "Table"
case 49 : fGetToolbarName = "Tabelle"
+ case 50 : fGetToolbarName = "Tabela"
case 55 : fGetToolbarName = "Table"
case 81 : fGetToolbarName = "Table"
case 82 : fGetToolbarName = "Table"
@@ -348,6 +363,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "Text Object"
case 46 : fGetToolbarName = "Text Object"
case 49 : fGetToolbarName = "Textobjekt"
+ case 50 : fGetToolbarName = "Besedilni predmet"
case 55 : fGetToolbarName = "Text Object"
case 81 : fGetToolbarName = "Text Object"
case 82 : fGetToolbarName = "Text Object"
@@ -365,6 +381,7 @@ function fGetToolbarName(sToolbar) as String
case 39 : fGetToolbarName = "XML Form Design"
case 46 : fGetToolbarName = "XML Form Design"
case 49 : fGetToolbarName = "XML Formularentwurf"
+ case 50 : fGetToolbarName = "Oblikovanje obrazca XML"
case 55 : fGetToolbarName = "XML Form Design"
case 81 : fGetToolbarName = "XML Form Design"
case 82 : fGetToolbarName = "XML Form Design"
diff --git a/testautomation/global/tools/includes/required/t_doc2.inc b/testautomation/global/tools/includes/required/t_doc2.inc
index fc5efb302231..efd2d2799a0e 100644..100755
--- a/testautomation/global/tools/includes/required/t_doc2.inc
+++ b/testautomation/global/tools/includes/required/t_doc2.inc
@@ -121,6 +121,7 @@ function sMakeReadOnlyDocumentEditable() as boolean
' no action was required (that is: Document was not read-only)
dim iTry as integer
+ dim iWait as integer
dim rc as integer
const CFN = "sMakeReadOnlyDocumentEditable::"
@@ -143,8 +144,27 @@ function sMakeReadOnlyDocumentEditable() as boolean
wait( 1000 )
endif
' ========== Workaround end ==========
-
Kontext "Standardbar"
+ iWait = 0
+ Do
+ if ( Bearbeiten.IsEnabled() ) then
+ try
+ if Bearbeiten.getState( 2 ) = 0 then
+ exit do
+ endif
+ catch
+ if ( VERBOSE ) then printlog "Attempt " & iWait & " to make document readable failed"
+ iWait = iWait + 1
+ wait ( 1000 )
+ endcatch
+ else
+ if ( VERBOSE ) then printlog "Attempt " & iWait & " to make document readable failed"
+ iWait = iWait + 1
+ wait ( 1000 )
+ end if
+ if iWait >= 5 then exit do
+ Loop
+
if ( Bearbeiten.IsEnabled() ) then
if ( Bearbeiten.getState( 2 ) = 0 ) then
diff --git a/testautomation/global/win/edia_d_h.win b/testautomation/global/win/edia_d_h.win
index d91003bdddd6..0e2fd251d285 100755
--- a/testautomation/global/win/edia_d_h.win
+++ b/testautomation/global/win/edia_d_h.win
@@ -316,7 +316,7 @@ ReplaceWith svx:ComboBox:RID_SVXDLG_SEARCH:ED_REPLACE
ReplaceWithStyle svx:ListBox:RID_SVXDLG_SEARCH:LB_REPLACE
SearchNow svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH
SearchAll svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH_ALL
-Replace svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE
+ReplaceBtn svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE
ReplaceAll svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE_ALL
MatchCase svx:CheckBox:RID_SVXDLG_SEARCH:CB_MATCH_CASE
WholeWordsOnly svx:CheckBox:RID_SVXDLG_SEARCH:CB_WHOLE_WORDS
@@ -454,7 +454,7 @@ HanjaOnly cui:CheckBox:RID_SVX_MDLG_HANGULHANJA:CB_HANJA_ONLY
ReplaceByCharacter cui:CheckBox:RID_SVX_MDLG_HANGULHANJA:CB_REPLACE_BY_CHARACTER
Ignore HID_HANGULDLG_BUTTON_IGNORE
AlwaysIgnore HID_HANGULDLG_BUTTON_IGNOREALL
-Replace HID_HANGULDLG_BUTTON_CHANGE
+ReplaceBtn HID_HANGULDLG_BUTTON_CHANGE
AlwaysReplace HID_HANGULDLG_BUTTON_CHANGEALL
Options HID_HANGULDLG_BUTTON_OPTIONS
Grid HID_HANGULDLG_SUGGESTIONS_GRID
@@ -485,4 +485,4 @@ DeleteEntry cui:PushButton:RID_SVX_MDLG_HANGULHANJA_EDIT:PB_HHE_DELETE
Automatic sc:RadioButton:RID_SCDLG_TEXT_IMPORT_OPTIONS:RB_AUTOMATIC
Custom sc:RadioButton:RID_SCDLG_TEXT_IMPORT_OPTIONS:RB_CUSTOM
CustomLanguage sc:ListBox:RID_SCDLG_TEXT_IMPORT_OPTIONS:LB_CUSTOM_LANG
-DetectSpecialNumbers sc:CheckBox:RID_SCDLG_TEXT_IMPORT_OPTIONS:BTN_CONVERT_DATE \ No newline at end of file
+DetectSpecialNumbers sc:CheckBox:RID_SCDLG_TEXT_IMPORT_OPTIONS:BTN_CONVERT_DATE
diff --git a/testautomation/global/win/spadmin.win b/testautomation/global/win/spadmin.win
index 056a2605ecc9..1e8de27e9b15 100755
--- a/testautomation/global/win/spadmin.win
+++ b/testautomation/global/win/spadmin.win
@@ -67,7 +67,6 @@ PBDefault padmin:PushButton:RID_PADIALOG:RID_PA_BTN_STD
PBRemove padmin:PushButton:RID_PADIALOG:RID_PA_BTN_DEL
PBTestpage padmin:PushButton:RID_PADIALOG:RID_PA_TESTPAGE
PBNewPrinter padmin:PushButton:RID_PADIALOG:RID_PA_BTN_ADD
-PBFonts padmin:PushButton:RID_PADIALOG:RID_PA_BTN_FONTS
*TabSPACommand padmin:TabPage:RID_RTS_COMMANDPAGE
EFlpr padmin:ComboBox:RID_RTS_COMMANDPAGE:RID_RTS_CMD_CB_COMMANDS
diff --git a/testautomation/graphics/optional/includes/global/g_autocorrection.inc b/testautomation/graphics/optional/includes/global/g_autocorrection.inc
index b0a0326a6f3f..74fa830a9b11 100644..100755
--- a/testautomation/graphics/optional/includes/global/g_autocorrection.inc
+++ b/testautomation/graphics/optional/includes/global/g_autocorrection.inc
@@ -137,7 +137,7 @@ testcase tToolsAutocorrectCustomQuotes(bSimple as boolean)
ExtensionString = "odg"
end if
- if iSprache = "1" OR iSprache = "33" OR iSprache = "34" OR iSprache = "36" OR iSprache = "39" OR iSprache = "46" OR iSprache = "48" OR iSprache = "49" OR iSprache = "55" then
+ if iSprache = "1" OR iSprache = "33" OR iSprache = "34" OR iSprache = "36" OR iSprache = "39" OR iSprache = "46" OR iSprache = "48" OR iSprache = "49" OR iSprache = "50" OR iSprache = "55" then
sFileName = (ConvertPath ( gTesttoolPath + "graphics\required\input\rightfont" & iSprache & "." + ExtensionString ))
elseif bAsianLan = true then
Printlog "Language-file for Asian language " & iSprache & " is missing. Using standard instead."
@@ -179,6 +179,7 @@ testcase tToolsAutocorrectCustomQuotes(bSimple as boolean)
case 46 : Vorn$ = Chr(8217) : Hinten$ = Chr(8217)
case 48 : Vorn$ = Chr(8216) : Hinten$ = Chr(8217)
case 49 : Vorn$ = Chr(8218) : Hinten$ = Chr(8216)
+ case 50 : Vorn$ = Chr(8216) : Hinten$ = Chr(8217)
case 55 : Vorn$ = Chr(8216) : Hinten$ = Chr(8217)
case 81, 82, 86, 88 : Vorn$ = Chr(8216) : Hinten$ = Chr(8217) ' Asian
case else : Warnlog "- Nothing prepared for this language, but I run: take the warnlogs an insert the numbers here.: "+iSprache
@@ -202,6 +203,7 @@ testcase tToolsAutocorrectCustomQuotes(bSimple as boolean)
case 46 : Vorn$ = Chr(8221) : Hinten$ = Chr(8221)
case 48 : Vorn$ = Chr(8222) : Hinten$ = Chr(8221)
case 49 : Vorn$ = Chr(8222) : Hinten$ = Chr(8220)
+ case 50 : Vorn$ = Chr(8220) : Hinten$ = Chr(8221)
case 55 : Vorn$ = Chr(8220) : Hinten$ = Chr(8221)
case 81, 82, 86, 88 : Vorn$ = Chr(8220) : Hinten$ = Chr(8221) ' Asian
case else : Warnlog "- Nothing prepared for this language: "+iSprache
diff --git a/testautomation/graphics/optional/includes/global/g_find_replace.inc b/testautomation/graphics/optional/includes/global/g_find_replace.inc
index 8dbff683eb83..f49de3b03d35 100644..100755
--- a/testautomation/graphics/optional/includes/global/g_find_replace.inc
+++ b/testautomation/graphics/optional/includes/global/g_find_replace.inc
@@ -69,6 +69,7 @@ testcase tiEditSearchAndReplace
case 47 : ' Norwegian
case 48 : sExpression(1) = "programmu" : sExpression(2) = "programu" ' Polish
case 49 : sExpression(1) = "Texxt" : sExpression(2) = "Schrieb" ' German
+ case 50 : sExpression(1) = "primer" : sExpression(2) = "napakka" ' Slovenian
case 55 : sExpression(1) = "esktava" : sExpression(2) = "norte" ' Portuguese (Brazil)
case 66 : ' Thai
' case 81 : sExpression(1) = "���" : sExpression(2) = "���" ' Japanese
@@ -204,7 +205,7 @@ testcase tiEditSearchAndReplace
SearchFor.SetText sExpression(2) '/// Search for word 2 ///'
ReplaceWith.SetText sExpression(1) '/// Replace with word 1 ///'
- Replace.Click '/// Replace 1 ///'
+ ReplaceBtn.Click '/// Replace 1 ///'
Kontext "Messagebox"
if Messagebox.Exists(4) Then
Kontext "Messagebox"
diff --git a/testautomation/graphics/optional/includes/global/g_ole.inc b/testautomation/graphics/optional/includes/global/g_ole.inc
index 520aa38af8a2..9689771df8a3 100644..100755
--- a/testautomation/graphics/optional/includes/global/g_ole.inc
+++ b/testautomation/graphics/optional/includes/global/g_ole.inc
@@ -341,7 +341,7 @@ testcase tiOpenOLECrash
FileOpen
sleep 1
Kontext "OeffnenDlg"
- printlog " Use file: graphics\\optional\\input\\generic_de.ppt "
+ printlog " Use file: graphics\optional\input\generic_de.ppt "
oFile = ConvertPath (gTesttoolPath + "graphics\required\input\generic_de.ppt")
Printlog "file: '" + oFile + "'"
Dateiname.SetText (oFile)
@@ -425,7 +425,7 @@ testcase tiOpenOLECrash
printlog "8. Choose OpenOffice.org 2.0 Formular"
Kontext "OLEObjektInsert"
- Objekttyp.Select (3)
+ Objekttyp.Select (4)
sleep (2)
PrintLog " Object: " + Objekttyp.GetSelText + " will be inserted."
printlog "Leave dialog 'Insert OLE Object' with OK"
diff --git a/testautomation/graphics/optional/includes/global/g_stylist.inc b/testautomation/graphics/optional/includes/global/g_stylist.inc
index f82a61b608e6..dc8663425e87 100644..100755
--- a/testautomation/graphics/optional/includes/global/g_stylist.inc
+++ b/testautomation/graphics/optional/includes/global/g_stylist.inc
@@ -57,7 +57,11 @@ testcase tFormatStylistFlyer
if Gestalter.NotExists = false Then
qaErrorLog " - Expected Stylist to be closed; But is Open. Check tests."
else
- hTypekeys "<F11>" '/// open stylist by pressing key [F11] ///'
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypekeys "<F11>" '/// open stylist by pressing key [F11] ///'
+ end if
sleep 1
end if
Kontext "Gestalter"
@@ -200,7 +204,11 @@ testcase tFormatStylistDocuments
printlog " - Close stylist using F11"
Gestalter.Undock
Sleep 1
- hTypeKeys "<F11>"
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypeKeys "<F11>"
+ end if
Kontext "Gestalter"
if Gestalter.exists then
warnlog " Stylist still exists - closing again"
@@ -661,7 +669,11 @@ testcase tiFormatStylist
TabOptionenNumerierung.Cancel
sleep 1
endif
- hTypeKeys "<F11>"
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypeKeys "<F11>"
+ end if
sleep 1
Kontext "Gestalter"
if Gestalter.Exists Then Warnlog "- Stylist could not be closed pressing F11"
@@ -866,7 +878,11 @@ testcase tFormatStylist
if (Stylist.NotExists) then
ErrorLog "There is no stylist open, should be."
else
- hTypekeys "<F11>"
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypekeys "<F11>"
+ end if
Kontext "Stylist"
if (Stylist.Exists) then
ErrorLog "The Stylist should be closed now."
diff --git a/testautomation/graphics/optional/includes/global/gallery.inc b/testautomation/graphics/optional/includes/global/gallery.inc
index c1f8e741cd44..8398395c3653 100644..100755
--- a/testautomation/graphics/optional/includes/global/gallery.inc
+++ b/testautomation/graphics/optional/includes/global/gallery.inc
@@ -469,6 +469,7 @@ testcase tGallery_GalleryView_Preview
case 46 : jpeg_bkg = 2 : iAnimation = 1 : iSound = 17
case 48 : jpeg_bkg = 2 : iAnimation = 1 : iSound = 17
case 49 : jpeg_bkg = 12 : iAnimation = 1 : iSound = 16
+ case 50 : jpeg_bkg = 12 : iAnimation = 1 : iSound = 16
case 55 : jpeg_bkg = 21 : iAnimation = 1 : iSound = 28
case 81 : jpeg_bkg = 21 : iAnimation = 1 : iSound = 10 'FHA TODO: Find out the right numbers for Asian languages.
case 82 : jpeg_bkg = 1 : iAnimation = 17 : iSound = 12
@@ -489,6 +490,7 @@ testcase tGallery_GalleryView_Preview
case 46 : jpeg_bkg = 2 : iAnimation = 5 : iSound = 2
case 48 : jpeg_bkg = 2 : iAnimation = 5 : iSound = 2
case 49 : jpeg_bkg = 2 : iAnimation = 5 : iSound = 2
+ case 50 : jpeg_bkg = 2 : iAnimation = 5 : iSound = 2
case 55 : jpeg_bkg = 2 : iAnimation = 5 : iSound = 2
case 81 : jpeg_bkg = 2 : iAnimation = 5 : iSound = 2 'FHA TODO: Find out the right numbers for Asian languages.
case 82 : jpeg_bkg = 1 : iAnimation = 5 : iSound = 2
@@ -651,6 +653,7 @@ testcase tGallery_GalleryView_Insert
case 46 : jpeg_bkg = 1 : iAnimation = 2
case 48 : jpeg_bkg = 3 : iAnimation = 1
case 49 : jpeg_bkg = 1 : iAnimation = 2
+ case 50 : jpeg_bkg = 1 : iAnimation = 2
case 55 : jpeg_bkg = 8 : iAnimation = 1
case 81 : jpeg_bkg = 1 : iAnimation = 3
case 82 : jpeg_bkg = 1 : iAnimation = 17
@@ -671,6 +674,7 @@ testcase tGallery_GalleryView_Insert
case 46 : jpeg_bkg = 1 : iAnimation = 2
case 48 : jpeg_bkg = 3 : iAnimation = 1
case 49 : jpeg_bkg = 1 : iAnimation = 2
+ case 50 : jpeg_bkg = 1 : iAnimation = 2
case 55 : jpeg_bkg = 6 : iAnimation = 1
case 81 : jpeg_bkg = 1 : iAnimation = 3
case 82 : jpeg_bkg = 1 : iAnimation = 1
@@ -859,6 +863,7 @@ testcase tGallery_GalleryView_Delete
case 39 : jpeg_bkg = 10 : iAnimation = 1 : iSound = 27
case 46 : jpeg_bkg = 1 : iAnimation = 2 : iSound = 18
case 49 : jpeg_bkg = 1 : iAnimation = 2 : iSound = 17
+ case 50 : jpeg_bkg = 1 : iAnimation = 2 : iSound = 17
case 55 : jpeg_bkg = 8 : iAnimation = 1 : iSound = 30
case 81 : jpeg_bkg = 1 : iAnimation = 3 : iSound = 10
case 82 : jpeg_bkg = 1 : iAnimation = 17 : iSound = 12
diff --git a/testautomation/graphics/optional/includes/global/id_005.inc b/testautomation/graphics/optional/includes/global/id_005.inc
index 2de7907852f1..0741bc82c8a9 100644..100755
--- a/testautomation/graphics/optional/includes/global/id_005.inc
+++ b/testautomation/graphics/optional/includes/global/id_005.inc
@@ -723,7 +723,11 @@ testcase tiFormatStylesAndFormatting
if (Stylist.NotExists) then
ErrorLog "There was no Stylist open, should be."
else
- hTypekeys "<F11>"
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypekeys "<F11>"
+ endif
Kontext "Stylist"
if (Stylist.Exists) then
ErrorLog "The Stylist should be closed now."
diff --git a/testautomation/graphics/optional/includes/impress/i_slideshow.inc b/testautomation/graphics/optional/includes/impress/i_slideshow.inc
index 9a8118b0cc54..3a2b56fa5511 100644..100755
--- a/testautomation/graphics/optional/includes/impress/i_slideshow.inc
+++ b/testautomation/graphics/optional/includes/impress/i_slideshow.inc
@@ -970,7 +970,11 @@ testcase tSlideShowSlideTransition
WaitSlot (3000)
try
'/// type key [F11] to open the stylist (to check ending of presenation) ///'
- hTypeKeys "<F11>"
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypeKeys "<F11>"
+ endif
Sleep (3)
Kontext "Gestalter"
Sleep (3)
diff --git a/testautomation/graphics/optional/includes/impress/i_us_present.inc b/testautomation/graphics/optional/includes/impress/i_us_present.inc
index 9272fda4c2a7..d161ab4f9de2 100644..100755
--- a/testautomation/graphics/optional/includes/impress/i_us_present.inc
+++ b/testautomation/graphics/optional/includes/impress/i_us_present.inc
@@ -40,18 +40,15 @@
'\********************************************************************
testcase i_us_presentation1
- dim iPictures as integer
- dim PresentationFile1 as string
- PresentationFile1 = ConvertPath ((ConvertPath (gOfficePath + "user\work\PowerPes1.odp")))
- Call hNewDocument '/// New impress document ///'
+ dim iPictures as integer
+ dim PresentationFile1 as string
+ PresentationFile1 = ConvertPath ((ConvertPath (gOfficePath + "user\work\PowerPes1.odp")))
+ printlog "New impress document"
+ Call hNewDocument
WaitSlot (2000)
kontext "DocumentImpress"
- '/// 1. ViewMaster: 2nd master - Background: picture (Gallery) ///'
- '/// - 50% Transparency ///'
- '/// - Mosaic 16px x 16px ///'
- '/// - Close Master ///'
- '/// Add second Master-Page ///'
+ printlog "Add second Master-Page"
ViewMasterPage
kontext "Slides"
SlidesControl.OpenContextMenu(true)
@@ -60,7 +57,7 @@ testcase i_us_presentation1
sleep (1)
printlog " Inserted second Master-Slide"
- '/// - Background: picture (Gallery) ///'
+ printlog "Background: picture (Gallery)"
Kontext "Gallery"
if Gallery.Exists(2) then
warnlog " The Gallery was already visible. Check earlier ran tests for inconsistency."
@@ -103,13 +100,14 @@ testcase i_us_presentation1
Gallerys.Select (iPictures)
View.TypeKeys "<HOME><RIGHT><RIGHT>"
- View.TypeKeys "<SHIFT F10>" 'OpenContextMenu(true)
+ printlog "'OpenContextMenu"
+ View.TypeKeys "<SHIFT F10>"
sleep (2)
MenuSelect(MenuGetItemID(1)) 'Insert
sleep (2)
MenuSelect(MenuGetItemID(1)) 'Copy
sleep (2)
- '/// Check that we really got a copy of the object ///'
+ printlog "Check that we really got a copy of the object "
kontext "DocumentImpress"
DocumentImpress.OpenContextMenu(true)
sleep (2)
@@ -128,13 +126,13 @@ testcase i_us_presentation1
ViewToolbarsPicture
end if
- '/// - 50% Transparency ///'
+ printlog "50% Transparency"
WaitSlot (2000)
kontext "GraphicObjectbar" ' the one with Transparency
Transparenz.SetText "50"
sleep (1)
- '/// - Mosaic 16px x 16px ///'
+ printlog "Mosaic 16px x 16px"
Filter.TearOff
sleep (1)
kontext "GraphicFilterBar"
@@ -153,7 +151,6 @@ testcase i_us_presentation1
kontext "DocumentImpress"
gMouseClick 50,50
sleep (1)
-' DocumentImpress.TypeKeys "<TAB>", 6
FormatPositionAndSize
WaitSlot (1000)
kontext
@@ -164,23 +161,22 @@ testcase i_us_presentation1
SizePosition.TypeKeys "<RIGHT><DOWN>"
TabPositionAndSize.OK
- '/// - Close Master ///'
+ printlog "Close Master"
ViewNormal
WaitSlot (1000)
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile1)
printlog "OK saved at ", PresentationFile1
WaitSlot (1000)
ActiveDeactivateCTLSupport (FALSE)
WaitSlot (2000)
- '/// Close Document ///'
+ printlog "Close Document"
Call hCloseDocument
-endcase
-
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
+endcase 'i_us_presentation1
+'-------------------------------------------------------------------------------
testcase i_us_presentation2
dim PresentationFile1 as string
dim PresentationFile2 as string
@@ -192,12 +188,12 @@ testcase i_us_presentation2
WaitSlot (10000)
else
warnlog " This test is supposed to run after the previous testcase has been run. Notify the Automatic-tester."
- '/// New impress document ///'
+ printlog "New impress document"
Call hNewDocument
WaitSlot (2000)
end if
- '/// New Slide ///'
+ printlog "New Slide"
kontext "slides"
SlidesControl.TypeKeys "<PAGEDOWN>"
SlidesControl.TypeKeys "<PAGEDOWN>"
@@ -208,21 +204,23 @@ testcase i_us_presentation2
MenuSelect(MenuGetItemID(1)) 'New Slide 'No 2
printlog " Inserted second normal Slide"
- '/// 2. Layouts: Text. Bild: Gallery: Animation - Gif ///'
+ printlog "2. Layouts: Text. Bild: Gallery: Animation - Gif"
Kontext "Tasks"
- LayoutsPreview.TypeKeys "<HOME>" 'to get to the very first position
- LayoutsPreview.TypeKeys "<RIGHT>", 9 'to get to the right position
+ printlog "to get to the very first position"
+ LayoutsPreview.TypeKeys "<HOME>"
+ printlog "'to get to the right position"
+ LayoutsPreview.TypeKeys "<RIGHT>", 9
LayoutsPreview.TypeKeys "<RETURN>"
Sleep (1)
ViewNormal
- '/// 3. Hide Slidepane (Oops! The user were too fast: accidently hide the pane) ///'
+ printlog "3. Hide Slidepane (Oops! The user were too fast: accidently hide the pane)"
kontext "Slides"
SlidesControl.FadeOut
WaitSlot (1000)
- '/// 4. Restore Pane. ///'
+ printlog "4. Restore Pane."
SlidesControl.FadeIn
printlog " Did the 'mistake' to FadeIn/Out the Slidepane"
@@ -233,7 +231,7 @@ testcase i_us_presentation2
DocumentImpress.TypeKeys "<RETURN>"
sleep (1)
- '/// Graphics-Import-dialogue. Select "i_us_large.jpg" ///'
+ printlog "Graphics-Import-dialogue. Select i_us_large.jpg"
Kontext "GrafikEinfuegenDlg"
sleep (2)
Dateiname.SetText ConvertPath (gTesttoolPath + "graphics\required\input\i_us_large.jpg")
@@ -242,11 +240,11 @@ testcase i_us_presentation2
WaitSlot (1000)
Kontext "DocumentImpress"
- '/// Deselect graphic ///'
+ printlog "Deselect graphic"
DocumentImpress.MouseDoubleClick 90,90
printlog " Inserted Graphic into the second Slide"
- '/// Change text on the two text-boxes ///'
+ printlog "Change text on the two text-boxes"
DocumentImpress.TypeKeys "<TAB>" 'First text.
DocumentImpress.TypeKeys "<RETURN>" 'To get into edit-mode.
DocumentImpress.TypeKeys "The World has just become a bit easier"
@@ -264,19 +262,18 @@ testcase i_us_presentation2
DocumentImpress.TypeKeys "Energy-efficient"
DocumentImpress.TypeKeys "<ESCAPE><ESCAPE>"
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile2)
printlog "OK saved at ", PresentationFile1
sleep (1)
ActiveDeactivateCTLSupport (FALSE)
sleep (2)
- '/// Close Document ///'
+ printlog "Close Document"
Call hCloseDocument
endcase 'i_us_presentation2
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
-
+'-------------------------------------------------------------------------------
testcase i_us_presentation3
dim PresentationFile2 as string
dim PresentationFile3 as string
@@ -288,12 +285,12 @@ testcase i_us_presentation3
WaitSlot (10000)
else
warnlog " This test is supposed to run after the previous testcase has been run. Notify the Automatic-tester."
- '/// New impress document ///'
+ printlog "New impress document"
Call hNewDocument
WaitSlot (2000)
end if
- '/// Insert New Slide ///'
+ printlog "Insert New Slide"
kontext "slides"
SlidesControl.TypeKeys "<PAGEDOWN>"
SlidesControl.TypeKeys "<PAGEDOWN>"
@@ -302,7 +299,7 @@ testcase i_us_presentation3
kontext "DocumentImpress"
InsertSlide 'No 3
- '/// 5. Layout. Clip/Text ///'
+ printlog "5. Layout. Clip/Text"
kontext "Tasks"
LayoutsPreview.TypeKeys "<HOME>" 'to get to the very first position
LayoutsPreview.TypeKeys "<RIGHT>", 4 'to get to the right position
@@ -316,8 +313,9 @@ testcase i_us_presentation3
DocumentImpress.TypeKeys "<TAB><RETURN>"
DocumentImpress.TypeKeys "A new form"
- '/// 6. (Fat picture) InsertPictureFromFile: (empty slide) (ev size-fit) ///'
- InsertGraphicsFromFile '/// insert graphic file (i_us_large.jpg) ///'
+ printlog "6. (Fat picture) InsertPictureFromFile: (empty slide) (ev size-fit)"
+ printlog "insert graphic file (i_us_large.jpg)"
+ InsertGraphicsFromFile
WaitSlot (1000)
Kontext "GrafikEinfuegenDlg"
Dateiname.SetText ConvertPath (gTesttoolPath + "graphics\required\input\i_us_large.jpg")
@@ -326,29 +324,28 @@ testcase i_us_presentation3
WaitSlot (2000)
Kontext "DocumentImpress"
- '/// The user corrects the picture ///'
+ printlog "The user corrects the picture"
DocumentImpress.MouseDown 50,50
DocumentImpress.MouseUp 50,50
DocumentImpress.TypeKeys "<DOWN>", 30
- '/// Deselect graphic ///'
+ printlog "Deselect graphic"
DocumentImpress.MouseDoubleClick 90,90
printlog " Wrote Text, Inserted Graphic, and moved it in the third Slide"
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile3)
printlog "OK saved at ", PresentationFile3
sleep (1)
ActiveDeactivateCTLSupport (FALSE)
sleep (2)
- '/// Close Document ///'
+ printlog "Close Document"
Call hCloseDocument
endcase 'i_us_presentation3
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
-
+'-------------------------------------------------------------------------------
testcase i_us_presentation4
dim PresentationFile3 as string
dim PresentationFile4 as string
@@ -361,7 +358,7 @@ testcase i_us_presentation4
WaitSlot (10000)
else
warnlog " This test is supposed to run after the previous testcase has been run. Notify the Automatic-tester."
- '/// New impress document ///'
+ printlog "New impress document"
Call hNewDocument
WaitSlot (2000)
end if
@@ -374,9 +371,10 @@ testcase i_us_presentation4
SlidesControl.TypeKeys "<PAGEDOWN>"
kontext "DocumentImpress"
- InsertSlide 'No 4
+printlog "insert slide no 4"
+InsertSlide
- '/// - Background: picture (Gallery) ///'
+ printlog "Background: picture (Gallery)"
Kontext "Gallery"
if Gallery.Exists(2) then
warnlog " The Gallery was already visible. Check earlier ran tests for inconsistency."
@@ -418,7 +416,7 @@ testcase i_us_presentation4
sleep (1)
MenuSelect(MenuGetItemID(1)) 'Copy
- '/// Check that we really got a copy of the object ///'
+ printlog "Check that we really got a copy of the object"
kontext "DocumentImpress"
DocumentImpress.OpenContextMenu(true)
WaitSlot (1000)
@@ -436,13 +434,13 @@ testcase i_us_presentation4
DocumentImpress.TypeKeys "<UP>", 82
DocumentImpress.TypeKeys "<LEFT>", 130
- '/// Deselect graphic ///'
+ printlog "Deselect graphic"
DocumentImpress.MouseDoubleClick 90,90
- '/// Close the Gallery ///'
+ printlog "Close the Gallery"
ToolsGallery
- '/// Change Text on slide ///'
+ printlog "Change Text on slide"
DocumentImpress.TypeKeys "<TAB>"
DocumentImpress.TypeKeys "<RETURN>"
DocumentImpress.TypeKeys "The process starts to flourish"
@@ -493,19 +491,18 @@ testcase i_us_presentation4
printlog " Inserted fourth slide with Gallery-object."
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile4)
printlog "OK saved at ", PresentationFile4
sleep (1)
ActiveDeactivateCTLSupport (FALSE)
sleep (2)
- '/// Close Document ///'
+ printlog "Close Document"
Call hCloseDocument
endcase 'i_us_presentation4
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
-
+'-------------------------------------------------------------------------------
testcase i_us_presentation5
dim PresentationFile4 as string
dim PresentationFile5 as string
@@ -517,7 +514,7 @@ testcase i_us_presentation5
WaitSlot (10000)
else
warnlog " This test is supposed to run after the previous testcase has been run. Notify the Automatic-tester."
- '/// New impress document ///'
+ printlog "New impress document"
Call hNewDocument
WaitSlot (2000)
end if
@@ -532,30 +529,29 @@ testcase i_us_presentation5
SlidesControl.TypeKeys "<PAGEDOWN>"
kontext "DocumentImpress"
- '/// 8. New Slide. (Insert Menu) (Duplicate slide) ///'
+ printlog "8. New Slide. (Insert Menu) (Duplicate slide)"
InsertDuplicateSlide 'No 5
- 'Change the text in some way. (the user is making a joke with the audience)
+ printlog "Change the text in some way. (the user is making a joke with the audience)"
gMouseClick 90,90
DocumentImpress.TypeKeys "<TAB>"
DocumentImpress.TypeKeys "<RETURN>"
- EditSelectAll 'DocumentImpress.TypeKeys "<MOD1 A>"
+ EditSelectAll
DocumentImpress.TypeKeys "And does it with strength..."
printlog " Inserted fifth slide with audience-joke."
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile5)
printlog "OK saved at ", PresentationFile5
sleep (1)
ActiveDeactivateCTLSupport (FALSE)
sleep (2)
- '/// Close Document///'
+ printlog "Close Document"
Call hCloseDocument
endcase 'i_us_presentation5
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
-
+'-------------------------------------------------------------------------------
testcase i_us_presentation6
dim PresentationFile5 as string
dim PresentationFile6 as string
@@ -567,7 +563,7 @@ testcase i_us_presentation6
WaitSlot (10000)
else
warnlog " This test is supposed to run after the previous testcase has been run. Notify the Automatic-tester."
- '/// New impress document ///'
+ printlog "New impress document"
Call hNewDocument
WaitSlot (2000)
end if
@@ -581,8 +577,8 @@ testcase i_us_presentation6
SlidesControl.TypeKeys "<PAGEDOWN>"
kontext "DocumentImpress"
- '/// 9. Q&A Slide ///'
- InsertSlide 'No 6
+ printlog "9. Q&A Slide"
+ InsertSlide
WaitSlot (1000)
kontext "DocumentImpress"
DocumentImpress.TypeKeys "<TAB>"
@@ -611,19 +607,18 @@ testcase i_us_presentation6
kontext "DocumentImpress"
printlog " Inserted sixth slide with Q&A."
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile6)
printlog "OK saved at ", PresentationFile6
sleep (1)
ActiveDeactivateCTLSupport (FALSE)
WaitSlot (2000)
- '/// Close Document ///'
+ printlog "Close Document"
Call hCloseDocument
endcase 'i_us_presentation6
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
-
+'-------------------------------------------------------------------------------
testcase i_us_presentation7
dim sFilter as string
@@ -639,7 +634,7 @@ testcase i_us_presentation7
WaitSlot (10000)
else
warnlog " This test is supposed to run after the previous testcase has been run. Notify the Automatic-tester."
- '/// New impress document ///'
+ printlog "New impress document"
Call hNewDocument
WaitSlot (2000)
end if
@@ -655,7 +650,7 @@ testcase i_us_presentation7
SlidesControl.TypeKeys "<PAGEDOWN>"
kontext "DocumentImpress"
- '/// 10. Ending Slide ///'
+ printlog " inserting Ending Slide"
InsertSlide 'No 7
DocumentImpress.TypeKeys "Ende"
printlog " Inserted ending -slide."
@@ -676,36 +671,35 @@ testcase i_us_presentation7
hTypeKeys "<F5>"
kontext "DocumentPresentation"
- sleep (3)
- DocumentPresentation.TypeKeys "<PAGEDOWN>"
- sleep (2)
- DocumentPresentation.TypeKeys "<PAGEDOWN>"
- sleep (2)
+ sleep (5)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
+ sleep (5)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
+ sleep (5)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
sleep (10)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
+ sleep (10)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
- sleep (2)
- DocumentPresentation.TypeKeys "<PAGEDOWN>"
+ sleep (5)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
- sleep (2)
+ sleep (5)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
+ sleep (5)
DocumentPresentation.TypeKeys "<PAGEDOWN>"
- sleep (2)
- DocumentPresentation.TypeKeys "<ESCAPE>"
+
if DocumentPresentation.Exists(5) then
+ hTypeKeys "<ESC>"
warnlog " Presentation should have ended. Please inform Automatic Tester."
end if
kontext "DocumentImpress"
- '/// Save Document ///'
+ printlog "Save Document"
call hFileSaveAsKill (PresentationFile7)
printlog "OK saved at ", PresentationFile7
sleep (1)
- '/// Save as Powerpoint-file ///'
+ printlog "Save as Powerpoint-file"
FileSaveAs
Kontext "SpeichernDlg"
Dateiname.SetText sFileName
@@ -719,21 +713,19 @@ testcase i_us_presentation7
printlog "Saved as: " + sFileName
sleep (3)
- '/// Close the office and reload the file ///'
+ printlog "Close the office and reload the file"
FileClose
Kontext "Messagebox"
if Messagebox.Exists(2) then Messagebox.Yes
sleep (3)
- '/// Open the saved file ///'
+ printlog "Open the saved file"
hFileOpen sFileName
printlog "File opened: " + sFileName
sleep (3)
- '/// Close the office-session ///'
+ printlog "Close the office-session"
ActiveDeactivateCTLSupport (FALSE)
sleep (2)
- '/// Close Document ///'
+ printlog "Close Document"
Call hCloseDocument
endcase 'i_us_presentation7
-
-'00oo...//==---...---...---...---....---...---...---...---...---...---...--..--.--.-.-.-.-....---....
diff --git a/testautomation/graphics/required/includes/global/id_005.inc b/testautomation/graphics/required/includes/global/id_005.inc
index 8b19fd601948..23d311d27cac 100644..100755
--- a/testautomation/graphics/required/includes/global/id_005.inc
+++ b/testautomation/graphics/required/includes/global/id_005.inc
@@ -923,7 +923,11 @@ testcase tiFormatStylesAndFormatting
ErrorLog "There was no Stylist open, should be."
else
printlog "Close Stylist"
- hTypekeys "<F11>"
+ if lcase(gPlatform) = "osx" then
+ hTypekeys "<mod1 t>"
+ else
+ hTypekeys "<F11>"
+ endif
Kontext "Stylist"
if (Stylist.Exists) then
ErrorLog "The Stylist should be closed now."
diff --git a/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc b/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc
index 2a39ad34911b..32eee7e6040c 100755
--- a/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc
+++ b/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc
@@ -310,6 +310,7 @@ testcase tFileOpenHTML
Call hNewDocument
Printlog " Open File-Open-dialog"
FileOpen
+ waitslot (5)
Kontext "OeffnenDlg"
Printlog " Enter filename spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html"
Dateiname.settext (sTestFile)
@@ -317,7 +318,6 @@ testcase tFileOpenHTML
Call hSelectUIFilter (sTestFilter1)
Printlog " Click on Open"
Oeffnen.Click
- sleep (1)
Kontext "HTMLImportOptions"
Printlog " Use every control on dialog Import Options"
Custom.Check
@@ -325,11 +325,13 @@ testcase tFileOpenHTML
Automatic.Check
DetectSpecialNumbers.Check
HTMLImportOptions.OK
+ sleep (2)
Printlog " Close recent document"
Call hCloseDocument
Printlog " Retry with Calc Web Querry filter"
Printlog " Open File-Open-dialog"
FileOpen
+ waitslot (5)
Kontext "OeffnenDlg"
Printlog " Enter filename spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html"
Dateiname.settext (sTestFile)
@@ -337,7 +339,6 @@ testcase tFileOpenHTML
Call hSelectUIFilter (sTestFilter2)
Printlog " Click on Open"
Oeffnen.Click
- sleep (1)
Kontext "HTMLImportOptions"
Printlog " Use every control on dialog Import Options"
Custom.Check
@@ -345,6 +346,7 @@ testcase tFileOpenHTML
Automatic.Check
DetectSpecialNumbers.Check
HTMLImportOptions.OK
+ sleep (2)
Printlog " Close recent document"
Call hCloseDocument
diff --git a/testautomation/spreadsheet/required/includes/c_upd_viewmenu.inc b/testautomation/spreadsheet/required/includes/c_upd_viewmenu.inc
index 5e8e5c1f0fdb..293418b76c2b 100644..100755
--- a/testautomation/spreadsheet/required/includes/c_upd_viewmenu.inc
+++ b/testautomation/spreadsheet/required/includes/c_upd_viewmenu.inc
@@ -324,13 +324,14 @@ testcase tViewNavigator
Szenarien.Click
Szenarien.Click
'/// Check that the dragmodus has 3 modes
- printlog " Check that the dragmodus has 3 modes"
- Dragmodus.OpenMenu
- waitslot(1000)
- if hMenuItemGetCount <> 3 then
- warnlog "Not enough modes for dragmodus"
- end if
- hMenuSelectNr (0)
+ qaerrorlog "Dragmodus disabled because of unreliability"
+' printlog " Check that the dragmodus has 3 modes"
+' Dragmodus.OpenMenu
+' waitslot(1000)
+' if hMenuItemGetCount <> 3 then
+' warnlog "Not enough modes for dragmodus"
+' end if
+' hMenuSelectNr (0)
'/// Close Navigator
printlog " Close Navigator"
Kontext "Navigator"
diff --git a/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion1.inc b/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion1.inc
index 5285a94e71bc..e58a4a2a94da 100644..100755
--- a/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion1.inc
+++ b/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion1.inc
@@ -75,8 +75,8 @@ testcase tHHNoSelction_1
Kontext "HangulHanjaConversion"
'/// Press Peplace button
- if Replace.IsEnabled then
- Replace.Click
+ if ReplaceBtn.IsEnabled then
+ ReplaceBtn.Click
else
Warnlog "Replace button is disabled !"
HangulHanjaConversion.Close
@@ -140,12 +140,12 @@ testcase tHHNoSelction_2
Kontext "HangulHanjaConversion"
'/// Press Peplace button
- if Replace.IsEnabled then
- Replace.Click
+ if ReplaceBtn.IsEnabled then
+ ReplaceBtn.Click
else
Ignore.Click
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
end if
if HangulHanjaConversion.Exists then HangulHanjaConversion.Close
@@ -194,13 +194,13 @@ testcase tHHNoSelction_3
Kontext "HangulHanjaConversion"
'/// Press Peplace button
- if Replace.IsEnabled then
- Replace.Click
+ if ReplaceBtn.IsEnabled then
+ ReplaceBtn.Click
else
Sleep 1
Ignore.Click
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
end if
@@ -325,16 +325,16 @@ testcase tHHNoSelction_6
Warnlog "Suggestion should be empty !"
end if
try
- Replace.Click
+ ReplaceBtn.Click
Warnlog "Replace button should NOT work !"
AlwaysReplace.Click
Warnlog "Always Replace button should NOT work !"
catch
Ignore.Click
endcatch
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
if HangulHanjaConversion.Exists then HangulHanjaConversion.Close
@@ -388,16 +388,16 @@ testcase tHHNoSelction_7
Warnlog "Suggestion should be empty !"
end if
try
- Replace.Click
+ ReplaceBtn.Click
Warnlog "Replace button should NOT work !"
AlwaysReplace.Click
Warnlog "Always Replace button should NOT work !"
catch
Ignore.Click
endcatch
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -446,11 +446,11 @@ testcase tHHSingleSelction_1
'/// + Press Peplace button
ToolsLanguageHangulHanjaConversion
Kontext "HangulHanjaConversion"
- if Replace.IsEnabled then
- Replace.Click
+ if ReplaceBtn.IsEnabled then
+ ReplaceBtn.Click
Sleep 1
try
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
catch
endcatch
@@ -501,9 +501,9 @@ testcase tHHMultiSelction_1
'/// + Press Peplace button
ToolsLanguageHangulHanjaConversion
Kontext "HangulHanjaConversion"
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
'/// Check if the result is correct
diff --git a/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion2.inc b/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion2.inc
index 1b17e9df8107..2d57bfc19d7e 100644..100755
--- a/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion2.inc
+++ b/testautomation/writer/optional/includes/hangulhanjaonversion/hhConversion2.inc
@@ -88,7 +88,7 @@ testcase tHHConversion_1
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -135,7 +135,7 @@ testcase tHHConversion_2
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -184,7 +184,7 @@ testcase tHHConversion_3
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -233,7 +233,7 @@ testcase tHHConversion_4
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -282,7 +282,7 @@ testcase tHHConversion_5
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -332,7 +332,7 @@ testcase tHHConversion_6
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -378,7 +378,7 @@ testcase tHHConversion_7
Kontext "HangulHanjaConversion"
HanjaAsRubyAbove.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -435,7 +435,7 @@ testcase tHHConversion_8
Kontext "HangulHanjaConversion"
HanjaAsRubyAbove.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -492,7 +492,7 @@ testcase tHHConversion_9
Kontext "HangulHanjaConversion"
HanjaAsRubyBelow.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -549,7 +549,7 @@ testcase tHHConversion_10
Kontext "HangulHanjaConversion"
HanjaAsRubyBelow.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -606,7 +606,7 @@ testcase tHHConversion_11
Kontext "HangulHanjaConversion"
HangulAsRubyAbove.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -663,7 +663,7 @@ testcase tHHConversion_12
Kontext "HangulHanjaConversion"
HangulAsRubyAbove.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -720,7 +720,7 @@ testcase tHHConversion_13
Kontext "HangulHanjaConversion"
HangulAsRubyBelow.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -777,7 +777,7 @@ testcase tHHConversion_14
Kontext "HangulHanjaConversion"
HangulAsRubyBelow.Check
Sleep 1
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -925,7 +925,7 @@ testcase tHHConversion_17
if Word.GetText <> sWord then
Warnlog "Hope get " & sWord & " in Word" & " but get " & Word.GetText
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
HangulHanjaConversion.Close
@@ -974,7 +974,7 @@ testcase tHHConversion_18
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1007,7 +1007,7 @@ testcase tHHConversion_18
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1121,7 +1121,7 @@ testcase tHHConversion_20
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1185,7 +1185,7 @@ testcase tHHConversion_21
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1220,7 +1220,7 @@ testcase tHHConversion_21
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1328,7 +1328,7 @@ testcase tHHConversion_23
ToolsLanguageHangulHanjaConversion
Kontext "HangulHanjaConversion"
for i = 1 to 2
- if Replace.IsEnabled then
+ if ReplaceBtn.IsEnabled then
try
Suggestions.Select 1
catch
@@ -1348,7 +1348,7 @@ testcase tHHConversion_23
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1398,7 +1398,7 @@ testcase tHHConversion_24
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1449,7 +1449,7 @@ testcase tHHConversion_25
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
@@ -1513,7 +1513,7 @@ testcase tHHConversion_26
if NOT HangulHanjaConversion.Exists then
Exit for
end if
- Replace.Click
+ ReplaceBtn.Click
Sleep 1
next i
diff --git a/testautomation/writer/optional/includes/regexp/search.inc b/testautomation/writer/optional/includes/regexp/search.inc
index a44b6a69372c..ce3d946fe3b9 100755
--- a/testautomation/writer/optional/includes/regexp/search.inc
+++ b/testautomation/writer/optional/includes/regexp/search.inc
@@ -170,6 +170,7 @@ testcase tCallDialog
case 39 : Shortcut = "<Mod1 f>"
case 46 : Shortcut = "<Mod1 f>"
case 49 : Shortcut = "<Mod1 f>"
+ case 50 : Shortcut = "<Mod1 f>"
case 55 : Shortcut = "<Mod1 f>"
case 81 : Shortcut = "<Mod1 f>"
case 82 : Shortcut = "<Mod1 f>"
@@ -474,6 +475,7 @@ testcase tUnderline_Search
case 39: ToggleAttribute(27,"True")
case 46: ToggleAttribute(30,"True")
case 49: ToggleAttribute(28,"True")
+ case 50: ToggleAttribute(15,"True")
case 55: ToggleAttribute(29,"True")
case 88: ToggleAttribute(13,"True")
case else : QAErrorlog "Please adapt test for this language!"
@@ -490,6 +492,7 @@ testcase tUnderline_Search
case 39: ToggleAttribute(35,"True") ' Sottolineato
case 46: ToggleAttribute(40,"True") ' Understruken
case 49: ToggleAttribute(37,"True") ' Unterstrichen
+ case 50: ToggleAttribute(24,"True") ' PodÄrtano
case 55: ToggleAttribute(38,"True") ' Sublinhado
case 88: ToggleAttribute(13,"True")
case else : QAErrorlog "Please adapt test for this language!"
@@ -525,6 +528,7 @@ testcase tUnderline_Replace
case 39: ToggleAttribute(27,"True")
case 46: ToggleAttribute(30,"True")
case 49: ToggleAttribute(28,"True")
+ case 50: ToggleAttribute(15,"True")
case 55: ToggleAttribute(29,"True")
case 88: ToggleAttribute(13,"True")
case else : QAErrorlog "Please adapt test for this language!"
@@ -541,6 +545,7 @@ testcase tUnderline_Replace
case 39: ToggleAttribute(35,"True") ' Sottolineato
case 46: ToggleAttribute(40,"True") ' Understruken
case 49: ToggleAttribute(37,"True") ' Unterstrichen
+ case 50: ToggleAttribute(24,"True") ' PodÄrtano
case 55: ToggleAttribute(38,"True") ' Sublinhado
case 88: ToggleAttribute(13,"True")
case else : QAErrorlog "Please adapt test for this language!"
@@ -788,6 +793,7 @@ testcase tParagraphStyle_Search
Case 39 : Such_Text = "Intestazione"
Case 46 : Such_Text = "Överskrift"
Case 49 : Such_Text = "Ãœberschrift" 'Suchen Absatzformat "Ãœberschrift"
+ Case 50 : Such_Text = "Naslov"
Case 55 : Such_Text = "Título Principal"
Case 81 : Such_Text = "見出ã—"
Case 86 : Such_Text = "标题"
@@ -1625,6 +1631,7 @@ sub Meldungs_Test
Case 39 : Text_In_Meldung = sProduct & " Writer ha cercato fino alla fine del documento. Volete continuare dall'inizio del documento?"
Case 46 : Text_In_Meldung = sProduct & " Writer har sökt till slutet av dokument. Vill du fortsätta sökningen i början av dokumentet?"
Case 49 : Text_In_Meldung = sProduct & " Writer hat bis zum Ende des Dokumentes gesucht. Möchten Sie die Suche am Dokumentanfang fortsetzen?"
+ Case 50 : Text_In_Meldung = sProduct & " Writer je preiskal do konca dokumenta. Ali želite nadaljevati na zaÄetku?"
Case 55 : Text_In_Meldung = sProduct & " Writer pesquisou até o final do documento. Deseja continuar do início?"
Case 81 : Text_In_Meldung = sProduct & " Writer ã¯ã€æ–‡æ›¸æœ«ã¾ã§æ¤œç´¢ã—ã¾ã—ãŸã€‚文書ã®å§‹ã‚ã«æˆ»ã£ã¦ç¶šè¡Œã—ã¾ã™ã‹ã€‚"
Case 82 : Text_In_Meldung = sProduct & " Writerê°€ ë¬¸ì„œì˜ ë까지 검색했습니다. ë¬¸ì„œì˜ ì‹œìž‘ë¶€ë¶„ì—ì„œ ê²€ìƒ‰ì„ ê³„ì†í•˜ê² ìŠµë‹ˆê¹Œ?"
diff --git a/testautomation/writer/optional/includes/stylist/w_stylist.inc b/testautomation/writer/optional/includes/stylist/w_stylist.inc
index 9a8589e34da5..b2e582045f27 100644..100755
--- a/testautomation/writer/optional/includes/stylist/w_stylist.inc
+++ b/testautomation/writer/optional/includes/stylist/w_stylist.inc
@@ -78,69 +78,73 @@ testcase tFormatStylist1
Dim xSize%
Dim ySize%
- printlog "- Format / Stylist : all methods with Navigator as window"
- printlog "New writerdocument"
- Call hNewDocument
- printlog " - Call Stylist with F11"
- printlog "Call stylist with <F11> aand proof all windowmethods at stylist"
- Call wTypeKeys "<F11>"
- Kontext "Stylist"
- if Stylist.NotExists then
- Warnlog "No Stylist with <F11>"
- FormatStylist
- end if
- xPos = Stylist.GetPosX
- yPos = Stylist.GetPosY
- xSize% = Stylist.GetSizeX
- ySize% = Stylist.GetSizeY
-
- printlog " - move Stylist"
- Stylist.Move 10, 10
- Sleep 1
- Stylist.Move 300, 400
- Sleep 1
- Stylist.Move 590, 790
- Sleep 1
- Stylist.Move xPos, yPos
- Sleep 1
-
- printlog " - size Stylist"
- try
- Stylist.Size 300, 400
- catch
- Warnlog "Sizen Stylist doesn't work.. see #i32449"
- endcatch
- Sleep 1
- try
- Stylist.Size xSize%, ySize%
- catch
- Warnlog "Sizen Stylist doesn't work.. see #i32449"
- endcatch
- Sleep 1
-
- printlog " - close Stylist and reopen ( has to be the same size )"
- xPos = Stylist.GetPosX
- yPos = Stylist.GetPosY
- xSize% = Stylist.GetSizeX
- ySize% = Stylist.GetSizeY
- FormatStylist
- Sleep 1
- FormatStylist
- if xPos <> Stylist.GetPosX then Warnlog "x-Pos. has been changed : Not -> "+ xPos + " but -> "+ Stylist.GetPosX
- if yPos <> Stylist.GetPosY then Warnlog "y-Pos. has been changed : Not -> "+ yPos + " but -> "+ Stylist.GetPosY
- if xSize% <> Stylist.GetSizeX then Warnlog "x-Size has been changed : Not -> "+ xSize% + " but -> "+ Stylist.GetSizeX
- if ySize% <> Stylist.GetSizeY then Warnlog "y-Size has been changed : Not -> "+ ySize% + " but -> "+ Stylist.GetSizeY
-
- printlog " - dock Stylist"
- Stylist.Dock
- Sleep 1
- if NOT Stylist.IsDocked then Warnlog "Stylist has not been docked in"
- Stylist.Undock
- Sleep 1
-
- Stylist.Close
- printlog "Close document"
- Call hCloseDocument
+ printlog "- Format / Stylist : all methods with Navigator as window"
+ printlog "New writerdocument"
+ Call hNewDocument
+ printlog " - Call Stylist with F11"
+ printlog "Call stylist with <F11> aand proof all windowmethods at stylist"
+ if lcase(gPlatform) = "osx" then
+ call hTypekeys "<mod1 t>"
+ else
+ Call wTypeKeys "<F11>"
+ end if
+ Kontext "Stylist"
+ if Stylist.NotExists then
+ Warnlog "No Stylist with <F11>"
+ FormatStylist
+ end if
+ xPos = Stylist.GetPosX
+ yPos = Stylist.GetPosY
+ xSize% = Stylist.GetSizeX
+ ySize% = Stylist.GetSizeY
+
+ printlog " - move Stylist"
+ Stylist.Move 10, 10
+ Sleep 1
+ Stylist.Move 300, 400
+ Sleep 1
+ Stylist.Move 590, 790
+ Sleep 1
+ Stylist.Move xPos, yPos
+ Sleep 1
+
+ printlog " - size Stylist"
+ try
+ Stylist.Size 300, 400
+ catch
+ Warnlog "Sizen Stylist doesn't work.. see #i32449"
+ endcatch
+ Sleep 1
+ try
+ Stylist.Size xSize%, ySize%
+ catch
+ Warnlog "Sizen Stylist doesn't work.. see #i32449"
+ endcatch
+ Sleep 1
+
+ printlog " - close Stylist and reopen ( has to be the same size )"
+ xPos = Stylist.GetPosX
+ yPos = Stylist.GetPosY
+ xSize% = Stylist.GetSizeX
+ ySize% = Stylist.GetSizeY
+ FormatStylist
+ Sleep 1
+ FormatStylist
+ if xPos <> Stylist.GetPosX then Warnlog "x-Pos. has been changed : Not -> "+ xPos + " but -> "+ Stylist.GetPosX
+ if yPos <> Stylist.GetPosY then Warnlog "y-Pos. has been changed : Not -> "+ yPos + " but -> "+ Stylist.GetPosY
+ if xSize% <> Stylist.GetSizeX then Warnlog "x-Size has been changed : Not -> "+ xSize% + " but -> "+ Stylist.GetSizeX
+ if ySize% <> Stylist.GetSizeY then Warnlog "y-Size has been changed : Not -> "+ ySize% + " but -> "+ Stylist.GetSizeY
+
+ printlog " - dock Stylist"
+ Stylist.Dock
+ Sleep 1
+ if NOT Stylist.IsDocked then Warnlog "Stylist has not been docked in"
+ Stylist.Undock
+ Sleep 1
+
+ Stylist.Close
+ printlog "Close document"
+ Call hCloseDocument
endcase
@@ -152,64 +156,68 @@ testcase tFormatStylist2
Dim xSize%
Dim ySize%
- printlog "- Format/Stylist : Methods from Stylist as Window between more than one document"
- printlog " New document"
- Call hNewDocument
- printlog "check all methods of Stylist as Window between more than one document"
- Call wTypeKeys "Test the stylist functions"
- printlog " - Call Stylist in first document and check in a second document"
- Sleep 2
- Kontext "Stylist"
- If Not Stylist.Exists then FormatStylist
- Sleep 2
- Call hNewDocument
- Call wTypeKeys "Test the stylist functions"
- Sleep 2
- Kontext "Stylist"
- if Stylist.NotExists then Warnlog "No Stylist in new document"
-
- printlog " - Close all documents and reopen"
- Sleep 2
- Call hCloseDocument
- Sleep 2
- Call hCloseDocument
- Sleep 2
- Call hNewDocument
- Sleep 2
- Call wTypeKeys "Test the stylist functions"
- Kontext "Stylist"
- if Stylist.NotExists then Warnlog "No Stylist in a new document"
-
- printlog " - Dock Stylist in first document and check in a new if docked"
- Sleep 2
- Stylist.Dock
- Sleep 1
- Call hNewDocument
- Call wTypeKeys "Test the stylist functions"
- Kontext "Stylist"
- if NOT Stylist.IsDocked then Warnlog "Stylist is not docked in new document"
-
- printlog " - Close all documents, reopen one and check docked Stylist"
- Call hCloseDocument
- Sleep 2
- Call hCloseDocument
- Sleep 2
- Call hNewDocument
- Kontext "Stylist"
- if NOT Stylist.IsDocked then Warnlog "Stylist is not docked in new document"
-
- printlog " - Close Stylist with <F11>"
- Stylist.Undock
- Sleep 1
- Call wTypeKeys "<F11>"
- Kontext "Stylist"
- if NOT Stylist.NotExists then
- Warnlog "Stylist is still open"
- Stylist.Close
- end if
- printlog "Close document"
- Call hCloseDocument
-
+ printlog "- Format/Stylist : Methods from Stylist as Window between more than one document"
+ printlog " New document"
+ Call hNewDocument
+ printlog "check all methods of Stylist as Window between more than one document"
+ Call wTypeKeys "Test the stylist functions"
+ printlog " - Call Stylist in first document and check in a second document"
+ Sleep 2
+ Kontext "Stylist"
+ If Not Stylist.Exists then FormatStylist
+ Sleep 2
+ Call hNewDocument
+ Call wTypeKeys "Test the stylist functions"
+ Sleep 2
+ Kontext "Stylist"
+ if Stylist.NotExists then Warnlog "No Stylist in new document"
+
+ printlog " - Close all documents and reopen"
+ Sleep 2
+ Call hCloseDocument
+ Sleep 2
+ Call hCloseDocument
+ Sleep 2
+ Call hNewDocument
+ Sleep 2
+ Call wTypeKeys "Test the stylist functions"
+ Kontext "Stylist"
+ if Stylist.NotExists then Warnlog "No Stylist in a new document"
+
+ printlog " - Dock Stylist in first document and check in a new if docked"
+ Sleep 2
+ Stylist.Dock
+ Sleep 1
+ Call hNewDocument
+ Call wTypeKeys "Test the stylist functions"
+ Kontext "Stylist"
+ if NOT Stylist.IsDocked then Warnlog "Stylist is not docked in new document"
+
+ printlog " - Close all documents, reopen one and check docked Stylist"
+ Call hCloseDocument
+ Sleep 2
+ Call hCloseDocument
+ Sleep 2
+ Call hNewDocument
+ Kontext "Stylist"
+ if NOT Stylist.IsDocked then Warnlog "Stylist is not docked in new document"
+
+ printlog " - Close Stylist with <F11>"
+ Stylist.Undock
+ Sleep 1
+ if lcase(gPlatform) = "osx" then
+ call hTypekeys "<mod1 t>"
+ else
+ Call wTypeKeys "<F11>"
+ end if
+ Kontext "Stylist"
+ if NOT Stylist.NotExists then
+ Warnlog "Stylist is still open"
+ Stylist.Close
+ end if
+ printlog "Close document"
+ Call hCloseDocument
+
endcase
' **********************************************************************
@@ -295,7 +303,7 @@ testcase tFormatStylist3
Sleep 1
next i
Stylist.Close
- printlog "Close document"
+ printlog "Close document"
Call hCloseDocument
endcase
@@ -307,31 +315,31 @@ testcase tFormatStylist4
Dim NeuerWert$
printlog "- Format / Stylist : check created Styles"
- printlog "New writerdocument"
- Call hNewDocument
- printlog " - create Paragraph Style in Stylist"
- Call wStyleCreate ( "ATesttool", "Paragraph", true )
- Kontext "Stylist"
- printlog "Check if Style has been added in stylist"
+ printlog "New writerdocument"
+ Call hNewDocument
+ printlog " - create Paragraph Style in Stylist"
+ Call wStyleCreate ( "ATesttool", "Paragraph", true )
+ Kontext "Stylist"
+ printlog "Check if Style has been added in stylist"
if wStyleSelect ( "ATesttool", "Paragraph" ) = false then Warnlog "Paragraph Style has not been found"
- printlog " - Create Character Style in Stylist"
- Call wStyleCreate ( "BTesttool", "Character", true )
- if wStyleSelect ( "BTesttool", "Character" ) = false then Warnlog "Character Style has not been found!"
- printlog " - Create Frame Style in Stylist"
+ printlog " - Create Character Style in Stylist"
+ Call wStyleCreate ( "BTesttool", "Character", true )
+ if wStyleSelect ( "BTesttool", "Character" ) = false then Warnlog "Character Style has not been found!"
+ printlog " - Create Frame Style in Stylist"
Call wStyleCreate ( "CTesttool", "Frame", true )
if wStyleSelect ( "CTesttool", "Frame" ) = false then Warnlog "Frame Style has not been found!"
- printlog " - Create Page Style in Stylist"
- Call wStyleCreate ( "DTesttool", "Page", true )
- if wStyleSelect ( "DTesttool", "Page" ) = false then Warnlog "Page Style has not been found"
+ printlog " - Create Page Style in Stylist"
+ Call wStyleCreate ( "DTesttool", "Page", true )
+ if wStyleSelect ( "DTesttool", "Page" ) = false then Warnlog "Page Style has not been found"
- printlog " - creating Styles should not have been affecting to new documents"
+ printlog " - creating Styles should not have been affecting to new documents"
' To avoid focus problems on unix first close stylist
- Kontext "Stylist"
+ Kontext "Stylist"
if Stylist.Exists then FormatStylist
- Call hNewDocument
- Kontext "Stylist"
+ Call hNewDocument
+ Kontext "Stylist"
if Not Stylist.Exists then FormatStylist
if wStyleSelect ( "ATesttool", "Paragraph" ) = true then Warnlog "Paragraph Style has been found in new document"
@@ -351,32 +359,32 @@ testcase tFormatStylist5
Dim bStyleFound as boolean
printlog "- Format / Stylist : select Style"
- printlog "New writerdocument"
- if bAsianLan = True then
- printlog "- Not in Asian languages!"
- goto endsub
- end if
- Call hNewDocument
- Call wTypeKeys "Dies ist ein formatierter Text <Shift Home>"
- printlog " - format Text"
- FormatCharacter
- Kontext
- Active.SetPage TabFontEffects
- Kontext "TabFontEffects"
- StrikeThrough.Select 2
- Outline.Check
- TabFontEffects.OK
-
- printlog " - adjust to Standard-Format through the Stylist"
- printlog "adjust to Standard-Format through the Stylist"
- FormatStylist
- Kontext "Stylist"
- if Stylist.NotExists then FormatStylist
- 'Get name for 'default' template
- Kontext "TextObjectbar"
- SuchMal = Vorlage.GetSelText
- printlog "Using " & SuchMal & " as 'default'"
- Kontext "Stylist"
+ printlog "New writerdocument"
+ if bAsianLan = True then
+ printlog "- Not in Asian languages!"
+ goto endsub
+ end if
+ Call hNewDocument
+ Call wTypeKeys "Dies ist ein formatierter Text <Shift Home>"
+ printlog " - format Text"
+ FormatCharacter
+ Kontext
+ Active.SetPage TabFontEffects
+ Kontext "TabFontEffects"
+ StrikeThrough.Select 2
+ Outline.Check
+ TabFontEffects.OK
+
+ printlog " - adjust to Standard-Format through the Stylist"
+ printlog "adjust to Standard-Format through the Stylist"
+ FormatStylist
+ Kontext "Stylist"
+ if Stylist.NotExists then FormatStylist
+ 'Get name for 'default' template
+ Kontext "TextObjectbar"
+ SuchMal = Vorlage.GetSelText
+ printlog "Using " & SuchMal & " as 'default'"
+ Kontext "Stylist"
Vorlagenliste.TypeKeys "<Home>"
bStyleFound = false
@@ -394,19 +402,19 @@ testcase tFormatStylist5
Warnlog "Style: " & Suchmal & " has not been found in Stylist"
Call hCloseDocument
goto endsub
- end if
-
- printlog " - check format"
- FormatCharacter
- Kontext
- Active.SetPage TabFontEffects
- Kontext "TabFontEffects"
- if StrikeThrough.GetSelIndex = 2 then Warnlog "Wrong entry selected in StrikeThrough"
- if Outline.IsChecked then Warnlog "Format Outline is still checked"
- TabFontEffects.OK
-
- printlog "Close document"
- Call hCloseDocument
+ end if
+
+ printlog " - check format"
+ FormatCharacter
+ Kontext
+ Active.SetPage TabFontEffects
+ Kontext "TabFontEffects"
+ if StrikeThrough.GetSelIndex = 2 then Warnlog "Wrong entry selected in StrikeThrough"
+ if Outline.IsChecked then Warnlog "Format Outline is still checked"
+ TabFontEffects.OK
+
+ printlog "Close document"
+ Call hCloseDocument
endcase
' **********************************************************************
@@ -463,7 +471,7 @@ testcase tFormatStylist6
TBGestalter.Click ZeichenVorlagen
if Vorlagenliste.GetSeltext <> "Testtool" then 'Go find the entry.
Vorlagenliste.TypeKeys "<Home>"
- For i = 1 to 100
+ For i = 1 to 100
Vorlagenliste.TypeKeys "<Down>"
if Vorlagenliste.GetSeltext = "Testtool" then 'Found it!
i = 102
@@ -483,7 +491,7 @@ testcase tFormatStylist6
if NOT Shadow.IsChecked then Warnlog "Shadow is not checked anymore"
if StrikeThrough.GetSelIndex <> 2 then Warnlog "Wrong entry selection in StrikeThrough"
if Overline.GetSelIndex <> 2 then Warnlog "Overline is not checked anymore"
- if OverlineColor.GetSelIndex <> 6 then Warnlog "Wrong Overline Color selected"
+ if OverlineColor.GetSelIndex <> 6 then Warnlog "Wrong Overline Color selected"
if NOT Outline.IsChecked then Warnlog "Outline is not checked anymore"
if Effects.GetSelIndex <> 3 then Warnlog "Wrong effect selected"
if NOT Blinking.IsChecked then Warnlog "Blinking is not checked anymore"
@@ -542,10 +550,10 @@ testcase tFormatStylist7
i = 102
end if
next i
- if i = 101 then
- warnlog "No Testtool -Stylist found. Check if new stylists can be created. Test ends."
- goto endsub
- end if
+ if i = 101 then
+ warnlog "No Testtool -Stylist found. Check if new stylists can be created. Test ends."
+ goto endsub
+ end if
end if
Vorlagenliste.TypeKeys "<SHIFT F10>" 'Open ContextMenu
Sleep 1
@@ -573,7 +581,7 @@ testcase tFormatStylist7
TBGestalter.Click ZeichenVorlagen
if Vorlagenliste.GetSeltext <> "Testtool" then
- Vorlagenliste.TypeKeys "<Home>"
+ Vorlagenliste.TypeKeys "<Home>"
For i = 1 to 100
Vorlagenliste.TypeKeys "<Down>"
if Vorlagenliste.GetSeltext = "Testtool" then 'Found it!
@@ -614,17 +622,17 @@ testcase tAssigningStyles1
Dim j as integer
Dim bStyleInList as boolean
- printlog "UI and Strings check"
+ printlog "UI and Strings check"
Call hNewDocument
- printlog "Open a new writerdocument"
- printlog "Check if the following strings and only those strings are present:"
- printlog "Clear formatting"
- printlog "Heading 1"
- printlog "Heading 2"
- printlog "Heading 3"
- printlog "Default"
- printlog "Text body"
- printlog "More..."
+ printlog "Open a new writerdocument"
+ printlog "Check if the following strings and only those strings are present:"
+ printlog "Clear formatting"
+ printlog "Heading 1"
+ printlog "Heading 2"
+ printlog "Heading 3"
+ printlog "Default"
+ printlog "Text body"
+ printlog "More..."
Select Case iSprache
Case 01 : sStyles = Array("Clear formatting", "Default", "Heading 1", "Heading 2", "Heading 3", "Text body", "More...")
Case 07 : sStyles = Array("Отменить форматирование", "Базовый", "Заголовок 1", "Заголовок 2", "Заголовок 3", "ОÑновной текÑÑ‚", "Дополнительно...")
@@ -690,17 +698,17 @@ testcase tAssigningStyles2
Dim sTemp as string
printlog "- Apply Style"
- printlog "New writerdocument"
+ printlog "New writerdocument"
Call hNewDocument
- printlog "Insert dummytext"
+ printlog "Insert dummytext"
if wBlindtextEinfuegen = false then
Call hCloseDocument
exit sub
end if
- printlog "Select whole dummytext"
+ printlog "Select whole dummytext"
Call wTypeKeys "<Mod1 A>"
- printlog "Apply style 'Heading 1' through Styles & Formatting combobox"
+ printlog "Apply style 'Heading 1' through Styles & Formatting combobox"
Kontext "Textobjectbar"
for i = 1 to Vorlage.GetItemCount
Vorlage.Select i
@@ -711,7 +719,7 @@ testcase tAssigningStyles2
end if
next i
- printlog "Check if style has been applied to paragraph"
+ printlog "Check if style has been applied to paragraph"
Call wTypeKeys "<Mod1 Home><End>"
Call wTypeKeys "<Left>", 2
@@ -740,17 +748,17 @@ testcase tAssigningStyles3
Call wTypeKeys "<Mod1 A>"
printlog "Format / Character"
FormatCharacter
- Kontext
- Active.Setpage TabFont
- Kontext "TabFont"
+ Kontext
+ Active.Setpage TabFont
+ Kontext "TabFont"
printlog "Apply first font in list and select 2nd Typeface"
- if gAsianSup = True then
- FontWest.Select 1
+ if gAsianSup = True then
+ FontWest.Select 1
StyleWest.Select 2
- else
- Font.Select 1
+ else
+ Font.Select 1
Style.Select 1
- end if
+ end if
TabFont.Ok
printlog "Enter 'MyStyle' in Stylelistbox"
@@ -838,7 +846,7 @@ endcase
testcase tAssigningStyles5
printlog "- Clear formatting: whole paragraph with hard formatting of some characters"
- printlog " - 1. Cursor outside of hard formatted string"
+ printlog " - 1. Cursor outside of hard formatted string"
printlog "Open a new writer document"
Call hNewDocument
printlog "Insert a dummytext"
@@ -848,28 +856,28 @@ testcase tAssigningStyles5
end if
printlog "Highlight first line in dummy text"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<Shift End>"
-
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<Shift End>"
+
printlog "Format / Bold"
- Kontext "TextObjectbar"
+ Kontext "TextObjectbar"
if Not TextObjectbar.Exists then Call hToolbarSelect ( "FORMATTING", true )
- Fett.Click
- Wait 500
+ Fett.Click
+ Wait 500
printlog "Set cursor outside of bold formatted text"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<Down><Right>"
-
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<Down><Right>"
+
printlog "Select 'Clear Formatting' in Style-Listbox"
- Kontext "Textobjectbar"
+ Kontext "Textobjectbar"
Vorlage.Select 1
Vorlage.TypeKeys "<Return>"
wait 500
printlog "Check that first line is still bold and has not been reset"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<Right>"
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<Right>"
Kontext "TextObjectbar"
if Fett.Getstate(2) = 0 then
@@ -877,7 +885,7 @@ testcase tAssigningStyles5
end if
printlog "Close document"
- Call hCloseDocument
+ Call hCloseDocument
endcase
' **********************************************************************
@@ -887,7 +895,7 @@ testcase tAssigningStyles6
Dim iStandard as integer
printlog "- Clear formatting: whole paragraph with hard formatting of some characters"
- printlog " - 2. Cursor inside of hard formatted string"
+ printlog " - 2. Cursor inside of hard formatted string"
printlog "Open a new writer document"
Call hNewDocument
printlog "Insert a dummytext"
@@ -897,34 +905,34 @@ testcase tAssigningStyles6
end if
printlog "Highlight first line in dummy text"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<Shift End>"
-
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<Shift End>"
+
printlog "Format / Bold"
- Kontext "TextObjectbar"
+ Kontext "TextObjectbar"
if Not TextObjectbar.Exists then Call hToolbarSelect ( "FORMATTING", true )
- Fett.Click
- Wait 500
+ Fett.Click
+ Wait 500
printlog "Point cursor to first highlighted word of bold formatted text"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<Right>"
-
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<Right>"
+
printlog "Select 'Format / Default Formatting' in Style-Listbox"
- FormatDefaultWriter
+ FormatDefaultWriter
wait 500
printlog "first highlighted word should be set to 'Standard'"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<Right>"
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<Right>"
Kontext "TextObjectbar"
if Fett.Getstate(2) = 1 then
Warnlog "Style 'Bold' has not been reset!"
end if
-
+
printlog "Check that rest of first line is still bold and has not been reset"
- Call wTypeKeys "<Mod1 Home>"
- Call wTypeKeys "<End><Left>"
+ Call wTypeKeys "<Mod1 Home>"
+ Call wTypeKeys "<End><Left>"
Kontext "TextObjectbar"
if Fett.Getstate(2) = 1 then
@@ -932,7 +940,7 @@ testcase tAssigningStyles6
end if
printlog "Close document"
- Call hCloseDocument
+ Call hCloseDocument
endcase
' **********************************************************************
@@ -942,27 +950,27 @@ testcase tAssigningStyles7
printlog "More ..."
printlog "Open a new writer document"
Call hNewDocument
-
+
printlog "Select 'More...' in Style-Listbox"
- Kontext "Textobjectbar"
+ Kontext "Textobjectbar"
Vorlage.Select Vorlage.GetItemCount
Vorlage.TypeKeys "<Return>"
wait 500
printlog "The Stylist should have been opened"
- Kontext "Stylist"
- if Not Stylist.Exists then
- Warnlog "'Styles and Formatting' doesn't open if 'More...' is selected in Style-Listbox"
- else
+ Kontext "Stylist"
+ if Not Stylist.Exists then
+ Warnlog "'Styles and Formatting' doesn't open if 'More...' is selected in Style-Listbox"
+ else
printlog "In Style group listbox 'Automatic' should be selected"
- if Gruppenliste.GetSelIndex <> 5 then
- Warnlog "Seems 'Automatic' is not selected per default in 'Styles and Formatting'"
- end if
- Stylist.Close
- end if
+ if Gruppenliste.GetSelIndex <> 5 then
+ Warnlog "Seems 'Automatic' is not selected per default in 'Styles and Formatting'"
+ end if
+ Stylist.Close
+ end if
printlog "Close document"
- Call hCloseDocument
+ Call hCloseDocument
endcase
' **********************************************************************
diff --git a/testautomation/writer/optional/includes/undo/w_undo_history_1.inc b/testautomation/writer/optional/includes/undo/w_undo_history_1.inc
index f97c7b53be60..43356c09017c 100644..100755
--- a/testautomation/writer/optional/includes/undo/w_undo_history_1.inc
+++ b/testautomation/writer/optional/includes/undo/w_undo_history_1.inc
@@ -84,7 +84,7 @@ testcase tUndoFindAndReplace
'/// Type 'ThisReplacementText' in 'Replace with' field
ReplaceWith.Settext "ThisReplacementText"
'/// Choose Button 'Replace' and close dialog
- Replace.Click
+ ReplaceBtn.Click
wait 500
Kontext "Active"
if Active.Exists then
diff --git a/testautomation/writer/optional/includes/undo/w_undo_history_2.inc b/testautomation/writer/optional/includes/undo/w_undo_history_2.inc
index dd36e286233f..a2f305a45f8c 100644..100755
--- a/testautomation/writer/optional/includes/undo/w_undo_history_2.inc
+++ b/testautomation/writer/optional/includes/undo/w_undo_history_2.inc
@@ -94,7 +94,7 @@ testcase tUndoFindAndReplaceLong
'/// Type 'ThisIsAboutALongTextThatHadToBeReplaced' in 'Replace with' field
ReplaceWith.Settext "ThisIsAboutALongTextThatHadToBeReplaced"
'/// Choose Button 'Replace' and close dialog
- Replace.Click
+ ReplaceBtn.Click
wait 500
Kontext "Active"
if Active.Exists then
@@ -452,7 +452,7 @@ testcase tUndoStyles
Sleep 1
ReplaceWithStyle.Select 4
wait 500
- Replace.Click
+ ReplaceBtn.Click
NewStyle = ReplaceWithStyle.GetSelText
Select Case iSprache
Case 01: StyleText = "Replace style: AUndoHistory -> " & NewStyle
diff --git a/testautomation/writer/required/includes/w_002_.inc b/testautomation/writer/required/includes/w_002_.inc
index 1c86e8f01a47..73de7ba6edeb 100644..100755
--- a/testautomation/writer/required/includes/w_002_.inc
+++ b/testautomation/writer/required/includes/w_002_.inc
@@ -658,7 +658,7 @@ endcase
'---------------------------------------------------
testcase tEditAutotext
- Dim k as integer
+ Dim j as integer
Dim i as integer
Dim CurrentEntryNr as integer
Dim unxAutotextCategorie as integer
@@ -678,6 +678,7 @@ testcase tEditAutotext
end if
PrintLog "Click Categories"
+ Kontext "Autotext"
Bereiche.Click
Sleep 1
Kontext "BereicheBearbeitenAutoText"
@@ -880,8 +881,7 @@ testcase tEditAutotext
if GetDocumentCount = 1 then
Warnlog "The autotext has been edited in current document!"
else
- hUseAsyncSlot( "FileClose" )
-
+ hUseAsyncSlot( "FileClose" )
Kontext "Active"
PrintLog "A message that module has been changed should come up"
if Active.Exists then
@@ -890,11 +890,6 @@ testcase tEditAutotext
Warnlog "Though changing the text module the document could be closed without a query!"
end if
end if
- if wDeleteAutotext("DummyAutotext") = false then
- Warnlog "Unable to delete created autotext"
- end if
- Kontext "Autotext"
- if Autotext.Exists then Autotext.Close
catch
Warnlog "Menu Autotext->'Edit' disabled !"
Kontext "Active"
@@ -908,16 +903,17 @@ testcase tEditAutotext
endcatch
end if
end if
- Kontext "Autotext"
- PrintLog "Close 'Autotext' dialog"
- Autotext.Close
- if wDeleteAutotext("DummyAutotext") = false then
- Warnlog "Unable to delete created autotext"
- end if
- Kontext "Autotext"
- if Autotext.Exists then Autotext.Close
endcatch
+ PrintLog "Close 'Autotext' dialog"
+ Kontext "Autotext"
+ if Autotext.Exists then Autotext.Close
+ if wDeleteAutotext("DummyAutotext") = false then
+ Warnlog "Unable to delete created autotext"
+ end if
+ Kontext "Autotext"
+ if Autotext.Exists then Autotext.Close
+
PrintLog "Close active document"
Call hCloseDocument
endcase
diff --git a/testautomation/writer/required/includes/w_011_.inc b/testautomation/writer/required/includes/w_011_.inc
index 754d4c58e538..61a20821349f 100644..100755
--- a/testautomation/writer/required/includes/w_011_.inc
+++ b/testautomation/writer/required/includes/w_011_.inc
@@ -411,7 +411,9 @@ testcase tZOArea
Call hNewDocument
printlog "Insert a draw object ( rectangle )"
Call wZeichenobjektEinfuegen ( "Rechteck", 30, 30, 50, 60 )
- Call gMouseClick ( 25, 25 )
+ ' Set focus to document
+ Call gMouseMove2 ( 50, 25 )
+ Call gMouseClick ( 50, 25 )
printlog "Select drawing object with shortcut 'Shift F4'"
Call wTypeKeys ( "<Shift F4>" )
@@ -452,6 +454,8 @@ testcase tZORest
Call hNewDocument
printlog "Insert a draw object ( rectangle )"
Call wZeichenobjektEinfuegen ( "Rechteck", 30, 30, 50, 60 )
+ ' Set focus to document
+ Call gMouseMove2 ( 50, 25 )
Call gMouseClick ( 50, 25 )
printlog "Select drawing object with shortcut 'Shift F4'"
Call wTypeKeys ( "<Shift F4>" )
@@ -464,7 +468,7 @@ testcase tZORest
Drehen.Click
wait 500
catch
- Warnlog "#i56594#Shortcut selecting objects doesn't work"
+ Warnlog "Shortcut selecting objects doesn't work"
Call hCloseDocument
goto endsub
endcatch
diff --git a/testautomation/writer/tools/includes/w_locale_strings2.inc b/testautomation/writer/tools/includes/w_locale_strings2.inc
index a679ecbabc04..73b987fb2c7e 100644..100755
--- a/testautomation/writer/tools/includes/w_locale_strings2.inc
+++ b/testautomation/writer/tools/includes/w_locale_strings2.inc
@@ -47,6 +47,7 @@ function wGetLanguageGuessString(sValue as string, iLanguageCount as integer) as
'///swedish 46 ///'
'///polish 48 ///'
'///german 49 ///'
+ '///slovenian 50 ///'
'///german 55 ///'
'///already covered languages in the test document: ///'
@@ -324,6 +325,32 @@ function wGetLanguageGuessString(sValue as string, iLanguageCount as integer) as
ParagraphPreSet = "Absatz ist Deutsch (Deutschland)"
end select
'-----------------------------------------------------------------------
+ Case 50 'Case 50: slovenian
+ Select Case iLanguageCount
+ Case 1: WordPreSet = "Jezik besede je angleški (ZDA)"
+ ParagraphPreSet = "Jezik odstavka je angleški (ZDA)"
+ Case 2: WordPreSet = "Jezik besede je portugalski (Portugalska)"
+ ParagraphPreSet = "Jezik odstavka je portugalski (Portugalska)"
+ Case 3: WordPreSet = "Jezik besede je ruski"
+ ParagraphPreSet = "Jezik odstavka je ruski"
+ Case 4: WordPreSet = "Jezik besede je nizozemski (Nizozemska)"
+ ParagraphPreSet = "Jezik odstavka je nizozemski (Nizozemska)"
+ Case 5: WordPreSet = "Jezik besede je francoski (Francija)"
+ ParagraphPreSet = "Jezik odstavka je francoski (Francija)"
+ Case 6: WordPreSet = "Jezik besede je Å¡panski (Å panija)"
+ ParagraphPreSet = "Jezik odstavka je Å¡panski (Å panija)"
+ Case 7: WordPreSet = "Jezik besede je madžarski"
+ ParagraphPreSet = "Jezik odstavka je madžarski"
+ Case 8: WordPreSet = "Jezik besede je italijanski (Italija)"
+ ParagraphPreSet = "Jezik odstavka je italijanski (Italija)"
+ Case 9: WordPreSet = "Jezik besede je Å¡vedski (Å vedska)"
+ ParagraphPreSet = "Jezik odstavka je Å¡vedski (Å vedska)"
+ Case 10:WordPreSet = "Jezik besede je poljski"
+ ParagraphPreSet = "Jezik odstavka je poljski"
+ Case 11:WordPreSet = "Jezik besede je nemÅ¡ki (NemÄija)"
+ ParagraphPreSet = "Jezik odstavka je nemÅ¡ki (NemÄija)"
+ end select
+ '-----------------------------------------------------------------------
Case 55 'Case 55: Portuguese (Brazil)
Select Case iLanguageCount
Case 1: WordPreSet = "a palavra é Inglês (EUA)"
diff --git a/testautomation/writer/tools/includes/w_tool1.inc b/testautomation/writer/tools/includes/w_tool1.inc
index 2131b1bd7dfd..34b83bc5e97b 100644..100755
--- a/testautomation/writer/tools/includes/w_tool1.inc
+++ b/testautomation/writer/tools/includes/w_tool1.inc
@@ -434,6 +434,8 @@ end sub
'----------------------------------------------------------------
sub sAutopilot_ListboxCombobox(WhichBox as String)
+ Dim iCount as integer
+ iCount = 1
Kontext "AutoPilotListComboBox"
if AutoPilotListComboBox.Exists then
printlog " -Autopilot-Listbox Page 1"
@@ -441,6 +443,18 @@ sub sAutopilot_ListboxCombobox(WhichBox as String)
if TabListboxData.Exists then
Call DialogTest( TabListBoxData )
DataSource.Select 1
+ Do
+ if iCount >= 15 then exit do
+ try
+ Table.Select 1
+ exit do
+ catch
+ wait 500
+ printlog " - attempt " & i & " to select table"
+ iCount = iCount + 1
+ endcatch
+ Loop
+
if Table.GetItemCount > 0 then
Table.Select 1
else
diff --git a/toolkit/source/layout/core/box-base.cxx b/toolkit/source/layout/core/box-base.cxx
index dbe9163e2117..d203e63ce2ed 100644
--- a/toolkit/source/layout/core/box-base.cxx
+++ b/toolkit/source/layout/core/box-base.cxx
@@ -104,15 +104,16 @@ Box_Base::addChild (uno::Reference <awt::XLayoutConstrains> const& xChild)
}
Box_Base::ChildData*
-Box_Base::removeChildData( std::list< ChildData* > lst, css::uno::Reference< css::awt::XLayoutConstrains > const& xChild )
+Box_Base::removeChildData( std::list< ChildData* >& lst, css::uno::Reference< css::awt::XLayoutConstrains > const& xChild )
{
for ( std::list< ChildData* >::iterator it = lst.begin();
it != lst.end(); it++ )
{
if ( (*it)->mxChild == xChild )
{
+ ChildData* pRet = *it;
lst.erase( it );
- return *it;
+ return pRet;
}
}
return 0;
diff --git a/toolkit/source/layout/core/box-base.hxx b/toolkit/source/layout/core/box-base.hxx
index 4f50f55bf5c4..685e0e35e8b6 100644
--- a/toolkit/source/layout/core/box-base.hxx
+++ b/toolkit/source/layout/core/box-base.hxx
@@ -62,7 +62,7 @@ protected:
virtual ChildData *createChild( css::uno::Reference< css::awt::XLayoutConstrains > const& xChild ) = 0;
virtual ChildProps *createChildProps( ChildData* pData ) = 0;
- ChildData *removeChildData( std::list< ChildData *>, css::uno::Reference< css::awt::XLayoutConstrains > const& Child );
+ ChildData *removeChildData( std::list< ChildData *>&, css::uno::Reference< css::awt::XLayoutConstrains > const& Child );
public:
void AddChild( const css::uno::Reference< css::awt::XLayoutConstrains >& Child);
diff --git a/toolkit/src2xml/include.lst b/toolkit/src2xml/include.lst
index a93449625585..2bf5fced6fd3 100644
--- a/toolkit/src2xml/include.lst
+++ b/toolkit/src2xml/include.lst
@@ -106,7 +106,6 @@
../../basic/unxlngi6.pro/inc
../../boost/unxlngi6.pro/inc
../../XmlSearch/unxlngi6.pro/inc
-../../fondu/unxlngi6.pro/inc
../../forms/inc
../../forms/source/inc
../../forms/source/solar/inc
diff --git a/tools/inc/tools/solar.h b/tools/inc/tools/solar.h
index 1d248853f895..2ae0fa5f2f32 100644
--- a/tools/inc/tools/solar.h
+++ b/tools/inc/tools/solar.h
@@ -384,6 +384,8 @@ template<typename T> inline T Abs(T a) { return (a>=0?a:-a); }
#define __DLLEXTENSION "lm.so"
#elif defined LINUX && defined HPPA
#define __DLLEXTENSION "lh.so"
+#elif defined LINUX && defined AXP
+ #define __DLLEXTENSION "ll.so"
#elif defined LINUX
#error unknown plattform
#elif defined FREEBSD && defined X86
diff --git a/tools/inc/tools/urlobj.hxx b/tools/inc/tools/urlobj.hxx
index 86a8114ab0b8..17d52432e206 100644
--- a/tools/inc/tools/urlobj.hxx
+++ b/tools/inc/tools/urlobj.hxx
@@ -125,22 +125,21 @@ enum INetProtocol
INET_PROT_DATA = 15,
INET_PROT_CID = 16,
INET_PROT_OUT = 17,
- INET_PROT_VND_SUN_STAR_WFS = 18,
- INET_PROT_VND_SUN_STAR_HIER = 19,
- INET_PROT_VIM = 20,
- INET_PROT_UNO = 21,
- INET_PROT_COMPONENT = 22,
- INET_PROT_VND_SUN_STAR_PKG = 23,
- INET_PROT_LDAP = 24,
- INET_PROT_DB = 25,
- INET_PROT_VND_SUN_STAR_CMD = 26,
- INET_PROT_VND_SUN_STAR_ODMA = 27,
- INET_PROT_TELNET = 28,
- INET_PROT_VND_SUN_STAR_EXPAND = 29,
- INET_PROT_VND_SUN_STAR_TDOC = 30,
- INET_PROT_GENERIC = 31,
- INET_PROT_SMB = 32,
- INET_PROT_END = 33
+ INET_PROT_VND_SUN_STAR_HIER = 18,
+ INET_PROT_VIM = 19,
+ INET_PROT_UNO = 20,
+ INET_PROT_COMPONENT = 21,
+ INET_PROT_VND_SUN_STAR_PKG = 22,
+ INET_PROT_LDAP = 23,
+ INET_PROT_DB = 24,
+ INET_PROT_VND_SUN_STAR_CMD = 25,
+ INET_PROT_VND_SUN_STAR_ODMA = 26,
+ INET_PROT_TELNET = 27,
+ INET_PROT_VND_SUN_STAR_EXPAND = 28,
+ INET_PROT_VND_SUN_STAR_TDOC = 29,
+ INET_PROT_GENERIC = 30,
+ INET_PROT_SMB = 31,
+ INET_PROT_END = 32
};
//============================================================================
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 07c532e60dd7..a6d7bc6fd04e 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -191,11 +191,6 @@ using namespace com::sun;
name = *(escaped / alphanum / "!" / "$" / "'" / "(" / ")" / "*" / "+" / "," / "-" / "." / ":" / ";" / "=" / "?" / "@" / "_" / "~"
- ; prvate (see RFC 1738, RFC 2396)
- vnd-sun-star-wfs-url = "VND.SUN.STAR.WFS://" [host / "LOCALHOST"] ["/" segment *("/" segment)]
- segment = *pchar
-
-
; private
vnd-sun-star-hier-url = "VND.SUN.STAR.HIER:" ["//"reg_name] *("/" *pchar)
reg_name = 1*(escaped / alphanum / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / "-" / "." / ":" / ";" / "=" / "@" / "_" / "~")
@@ -403,8 +398,6 @@ static INetURLObject::SchemeInfo const aSchemeInfoMap[INET_PROT_END]
false, false },
{ "out", "out://", 0, true, false, false, false, false, false,
false, false },
- { "vnd.sun.star.wfs", "vnd.sun.star.wfs://", 0, true, false, false,
- false, true, true, true, false },
{ "vnd.sun.star.hier", "vnd.sun.star.hier:", 0, true, false, false,
false, false, false, true, false },
{ "vim", "vim://", 0, true, true, false, true, false, false, true,
@@ -429,7 +422,7 @@ static INetURLObject::SchemeInfo const aSchemeInfoMap[INET_PROT_END]
false, false, false, false, false },
{ "vnd.sun.star.tdoc", "vnd.sun.star.tdoc:", 0, false, false, false,
false, false, false, true, false },
- { "", "", 0, false, false, false, false, false, false, false, false },
+ { "", "", 0, false, false, false, false, true, true, true, false },
{ "smb", "smb://", 139, true, true, false, true, true, true, true,
true } };
@@ -1338,7 +1331,7 @@ bool INetURLObject::setAbsURIRef(rtl::OUString const & rTheAbsURIRef,
if (pHostPortBegin)
{
sal_Unicode const * pPort = pHostPortEnd;
- if (getSchemeInfo().m_bPort && pHostPortBegin < pHostPortEnd)
+ if ( getSchemeInfo().m_bPort && pHostPortBegin < pHostPortEnd )
{
sal_Unicode const * p1 = pHostPortEnd - 1;
while (p1 > pHostPortBegin && INetMIME::isDigit(*p1))
@@ -1350,7 +1343,6 @@ bool INetURLObject::setAbsURIRef(rtl::OUString const & rTheAbsURIRef,
switch (m_eScheme)
{
case INET_PROT_FILE:
- case INET_PROT_VND_SUN_STAR_WFS:
// If the host equals "LOCALHOST" (unencoded and ignoring
// case), turn it into an empty host:
if (INetMIME::equalIgnoreCase(pHostPortBegin, pPort,
@@ -1367,7 +1359,6 @@ bool INetURLObject::setAbsURIRef(rtl::OUString const & rTheAbsURIRef,
return false;
}
break;
-
default:
if (pHostPortBegin == pPort)
{
@@ -1609,7 +1600,23 @@ bool INetURLObject::convertRelToAbs(rtl::OUString const & rTheRelURIRef,
STATE_DONE };
rtl::OUStringBuffer aSynAbsURIRef;
- aSynAbsURIRef.appendAscii(getSchemeInfo().m_pScheme);
+ // make sure that the scheme is copied for generic schemes: getSchemeInfo().m_pScheme
+ // is empty ("") in that case, so take the scheme from m_aAbsURIRef
+ if (m_eScheme != INET_PROT_GENERIC)
+ {
+ aSynAbsURIRef.appendAscii(getSchemeInfo().m_pScheme);
+ }
+ else
+ {
+ sal_Unicode const * pSchemeBegin
+ = m_aAbsURIRef.getStr();
+ sal_Unicode const * pSchemeEnd = pSchemeBegin;
+ while (pSchemeEnd[0] != ':')
+ {
+ ++pSchemeEnd;
+ }
+ aSynAbsURIRef.append(pSchemeBegin, pSchemeEnd - pSchemeBegin);
+ }
aSynAbsURIRef.append(sal_Unicode(':'));
sal_Char cEscapePrefix = getEscapePrefix();
@@ -2162,11 +2169,7 @@ INetURLObject::getPrefix(sal_Unicode const *& rBegin,
{ "vnd.sun.star.tdoc:", 0, INET_PROT_VND_SUN_STAR_TDOC,
PrefixInfo::OFFICIAL },
{ "vnd.sun.star.webdav:", 0, INET_PROT_VND_SUN_STAR_WEBDAV,
- PrefixInfo::OFFICIAL },
- { "vnd.sun.star.wfs:", 0, INET_PROT_VND_SUN_STAR_WFS,
- PrefixInfo::OFFICIAL },
- { "wfs:", "vnd.sun.star.wfs:", INET_PROT_VND_SUN_STAR_WFS,
- PrefixInfo::ALIAS } };
+ PrefixInfo::OFFICIAL } };
PrefixInfo const * pFirst = aMap + 1;
PrefixInfo const * pLast = aMap + sizeof aMap / sizeof (PrefixInfo) - 1;
PrefixInfo const * pMatch = 0;
@@ -2889,7 +2892,6 @@ bool INetURLObject::setHost(rtl::OUString const & rTheHost, bool bOctets,
switch (m_eScheme)
{
case INET_PROT_FILE:
- case INET_PROT_VND_SUN_STAR_WFS:
{
rtl::OUString sTemp(aSynHost);
if (sTemp.equalsIgnoreAsciiCaseAsciiL(
@@ -2985,7 +2987,6 @@ bool INetURLObject::parsePath(INetProtocol eScheme,
break;
case INET_PROT_FILE:
- case INET_PROT_VND_SUN_STAR_WFS:
{
if (bSkippedInitialSlash)
aTheSynPath.append(sal_Unicode('/'));
@@ -3398,7 +3399,6 @@ bool INetURLObject::parsePath(INetProtocol eScheme,
if (aTheSynPath.getLength() == 0)
return false;
break;
-
default:
OSL_ASSERT(false);
break;
@@ -3825,7 +3825,27 @@ INetURLObject::getAbbreviated(
OSL_ENSURE(rStringWidth.is(), "specification violation");
sal_Char cEscapePrefix = getEscapePrefix();
rtl::OUStringBuffer aBuffer;
- aBuffer.appendAscii(getSchemeInfo().m_pScheme);
+ // make sure that the scheme is copied for generic schemes: getSchemeInfo().m_pScheme
+ // is empty ("") in that case, so take the scheme from m_aAbsURIRef
+ if (m_eScheme != INET_PROT_GENERIC)
+ {
+ aBuffer.appendAscii(getSchemeInfo().m_pScheme);
+ }
+ else
+ {
+ if (m_aAbsURIRef)
+ {
+ sal_Unicode const * pSchemeBegin
+ = m_aAbsURIRef.getStr();
+ sal_Unicode const * pSchemeEnd = pSchemeBegin;
+
+ while (pSchemeEnd[0] != ':')
+ {
+ ++pSchemeEnd;
+ }
+ aBuffer.append(pSchemeBegin, pSchemeEnd - pSchemeBegin);
+ }
+ }
aBuffer.append(static_cast< sal_Unicode >(':'));
bool bAuthority = getSchemeInfo().m_bAuthority;
sal_Unicode const * pCoreBegin
@@ -4007,7 +4027,6 @@ bool INetURLObject::operator ==(INetURLObject const & rObject) const
switch (m_eScheme)
{
case INET_PROT_FILE:
- case INET_PROT_VND_SUN_STAR_WFS:
{
// If the URL paths of two file URLs only differ in that one has a
// final '/' and the other has not, take the two paths as
@@ -4162,7 +4181,6 @@ bool INetURLObject::ConcatData(INetProtocol eTheScheme,
switch (m_eScheme)
{
case INET_PROT_FILE:
- case INET_PROT_VND_SUN_STAR_WFS:
{
rtl::OUString sTemp(aSynHost);
if (sTemp.equalsIgnoreAsciiCaseAsciiL(
diff --git a/tools/workben/urltest.cxx b/tools/workben/urltest.cxx
index 694698297680..0930dfcc5239 100644
--- a/tools/workben/urltest.cxx
+++ b/tools/workben/urltest.cxx
@@ -523,6 +523,8 @@ main()
/*TODO "vnd.sun.star.wfs:///c|/xyz/",*/
/*TODO "vnd.sun.star.wfs://xxx/yyy?zzz",*/
"vnd.sun.star.wfs:///x/y/z",
+ "vnd.sun.star.generic:///x/y/z",
+ "vnd.sun.star.generic://host:34/x/y/z"
/*TODO "wfs://",*/
/*TODO "wfs://LocalHost",*/
/*TODO "wfs:///c|/xyz/",*/
@@ -533,13 +535,21 @@ main()
INetURLObject aUrl(aTest[i]);
if (aUrl.HasError())
printf("BAD %s\n", aTest[i]);
- else if (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
- equalsAscii(aTest[i]) != sal_True)
+ else
{
+ if (aUrl.GetProtocol() != INET_PROT_GENERIC) {
+ printf("BAD PROTOCOL %i -> %i\n",
+ aUrl.GetProtocol(),
+ INET_PROT_GENERIC);
+ }
+ if (aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI).
+ equalsAscii(aTest[i]) != sal_True)
+ {
String sTest(aUrl.GetMainURL(INetURLObject::DECODE_TO_IURI));
printf("BAD %s -> %s\n",
aTest[i],
ByteString(sTest, RTL_TEXTENCODING_ASCII_US).GetBuffer());
+ }
}
}
}
diff --git a/ucb/source/core/ucb.cxx b/ucb/source/core/ucb.cxx
index 76c33f45a548..c13ec9d367c8 100644
--- a/ucb/source/core/ucb.cxx
+++ b/ucb/source/core/ucb.cxx
@@ -40,7 +40,11 @@
#include <com/sun/star/ucb/XCommandInfo.hpp>
#include <com/sun/star/ucb/XContentProvider.hpp>
#include <com/sun/star/ucb/XContentProviderSupplier.hpp>
-#include <ucbhelper/configureucb.hxx>
+#include <com/sun/star/ucb/XParameterizedContentProvider.hpp>
+#include <com/sun/star/ucb/XContentProviderFactory.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/uno/Any.hxx>
#include <ucbhelper/cancelcommandexecution.hxx>
#include "identify.hxx"
#include "ucbcmds.hxx"
@@ -59,6 +63,126 @@ using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::ucb;
using namespace ucb_impl;
+using namespace com::sun::star;
+using namespace ucbhelper;
+
+
+#define CONFIG_CONTENTPROVIDERS_KEY \
+ "/org.openoffice.ucb.Configuration/ContentProviders"
+
+
+namespace {
+
+bool fillPlaceholders(rtl::OUString const & rInput,
+ uno::Sequence< uno::Any > const & rReplacements,
+ rtl::OUString * pOutput)
+{
+ sal_Unicode const * p = rInput.getStr();
+ sal_Unicode const * pEnd = p + rInput.getLength();
+ sal_Unicode const * pCopy = p;
+ rtl::OUStringBuffer aBuffer;
+ while (p != pEnd)
+ switch (*p++)
+ {
+ case '&':
+ if (pEnd - p >= 4
+ && p[0] == 'a' && p[1] == 'm' && p[2] == 'p'
+ && p[3] == ';')
+ {
+ aBuffer.append(pCopy, p - 1 - pCopy);
+ aBuffer.append(sal_Unicode('&'));
+ p += 4;
+ pCopy = p;
+ }
+ else if (pEnd - p >= 3
+ && p[0] == 'l' && p[1] == 't' && p[2] == ';')
+ {
+ aBuffer.append(pCopy, p - 1 - pCopy);
+ aBuffer.append(sal_Unicode('<'));
+ p += 3;
+ pCopy = p;
+ }
+ else if (pEnd - p >= 3
+ && p[0] == 'g' && p[1] == 't' && p[2] == ';')
+ {
+ aBuffer.append(pCopy, p - 1 - pCopy);
+ aBuffer.append(sal_Unicode('>'));
+ p += 3;
+ pCopy = p;
+ }
+ break;
+
+ case '<':
+ sal_Unicode const * q = p;
+ while (q != pEnd && *q != '>')
+ ++q;
+ if (q == pEnd)
+ break;
+ rtl::OUString aKey(p, q - p);
+ rtl::OUString aValue;
+ bool bFound = false;
+ for (sal_Int32 i = 2; i + 1 < rReplacements.getLength();
+ i += 2)
+ {
+ rtl::OUString aReplaceKey;
+ if ((rReplacements[i] >>= aReplaceKey)
+ && aReplaceKey == aKey
+ && (rReplacements[i + 1] >>= aValue))
+ {
+ bFound = true;
+ break;
+ }
+ }
+ if (!bFound)
+ return false;
+ aBuffer.append(pCopy, p - 1 - pCopy);
+ aBuffer.append(aValue);
+ p = q + 1;
+ pCopy = p;
+ break;
+ }
+ aBuffer.append(pCopy, pEnd - pCopy);
+ *pOutput = aBuffer.makeStringAndClear();
+ return true;
+}
+
+void makeAndAppendXMLName(
+ rtl::OUStringBuffer & rBuffer, const rtl::OUString & rIn )
+{
+ sal_Int32 nCount = rIn.getLength();
+ for ( sal_Int32 n = 0; n < nCount; ++n )
+ {
+ const sal_Unicode c = rIn.getStr()[ n ];
+ switch ( c )
+ {
+ case '&':
+ rBuffer.appendAscii( "&amp;" );
+ break;
+
+ case '"':
+ rBuffer.appendAscii( "&quot;" );
+ break;
+
+ case '\'':
+ rBuffer.appendAscii( "&apos;" );
+ break;
+
+ case '<':
+ rBuffer.appendAscii( "&lt;" );
+ break;
+
+ case '>':
+ rBuffer.appendAscii( "&gt;" );
+ break;
+
+ default:
+ rBuffer.append( c );
+ break;
+ }
+ }
+}
+
+}
//=========================================================================
//
@@ -132,6 +256,9 @@ void SAL_CALL UniversalContentBroker::dispose()
aEvt.Source = SAL_STATIC_CAST( XComponent*, this );
m_pDisposeEventListeners->disposeAndClear( aEvt );
}
+
+ if ( m_xNotifier.is() )
+ m_xNotifier->removeChangesListener( this );
}
//=========================================================================
@@ -193,9 +320,11 @@ void SAL_CALL UniversalContentBroker::initialize(
//@@@ At the moment, there's a problem when one (non-one-instance) factory
// 'wraps' another (one-instance) factory, causing this method to be
// called several times:
+ m_aArguments = aArguments;
+
oslInterlockedCount nCount = osl_incrementInterlockedCount(&m_nInitCount);
if (nCount == 1)
- ::ucbhelper::configureUcb(this, m_xSMgr, aArguments, 0);
+ configureUcb();
else
osl_decrementInterlockedCount(&m_nInitCount);
// make the possibility of overflow less likely...
@@ -508,6 +637,80 @@ void SAL_CALL UniversalContentBroker::abort( sal_Int32 )
//=========================================================================
//
+// XChangesListener methods
+//
+//=========================================================================
+// virtual
+void SAL_CALL UniversalContentBroker::changesOccurred( const util::ChangesEvent& Event )
+ throw( uno::RuntimeException )
+{
+ sal_Int32 nCount = Event.Changes.getLength();
+ if ( nCount )
+ {
+
+ uno::Reference< lang::XMultiServiceFactory > xConfigProv(
+ m_xSMgr->createInstance(
+ rtl::OUString::createFromAscii(
+ "com.sun.star.configuration.ConfigurationProvider" ) ),
+ uno::UNO_QUERY_THROW );
+
+ uno::Sequence< uno::Any > aArguments( 1 );
+ beans::PropertyValue aProperty;
+ aProperty.Name
+ = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) );
+ aProperty.Value <<= Event.Base;
+ aArguments[ 0 ] <<= aProperty;
+
+ uno::Reference< uno::XInterface > xInterface(
+ xConfigProv->createInstanceWithArguments(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationAccess" ) ),
+ aArguments ) );
+
+ uno::Reference< container::XHierarchicalNameAccess >
+ xHierNameAccess( xInterface, uno::UNO_QUERY_THROW );
+
+ const util::ElementChange* pElementChanges
+ = Event.Changes.getConstArray();
+
+ ContentProviderDataList aData;
+ for ( sal_Int32 n = 0; n < nCount; ++n )
+ {
+ const util::ElementChange& rElem = pElementChanges[ n ];
+ rtl::OUString aKey;
+ rElem.Accessor >>= aKey;
+
+ ContentProviderData aInfo;
+
+ createContentProviderData(aKey, xHierNameAccess, aInfo);
+
+ aData.push_back(aInfo);
+ }
+
+ prepareAndRegister(aData);
+ }
+}
+
+//=========================================================================
+//
+// XEventListener methods
+//
+//=========================================================================
+// virtual
+void SAL_CALL UniversalContentBroker::disposing(const lang::EventObject&)
+ throw( uno::RuntimeException )
+{
+ if ( m_xNotifier.is() )
+ {
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+
+ if ( m_xNotifier.is() )
+ m_xNotifier.clear();
+ }
+}
+
+//=========================================================================
+//
// Non-interface methods
//
//=========================================================================
@@ -524,6 +727,212 @@ Reference< XContentProvider > UniversalContentBroker::queryContentProvider(
: Reference< XContentProvider >();
}
+bool UniversalContentBroker::configureUcb()
+ throw (uno::RuntimeException)
+{
+ rtl::OUString aKey1;
+ rtl::OUString aKey2;
+ if (m_aArguments.getLength() < 2
+ || !(m_aArguments[0] >>= aKey1) || !(m_aArguments[1] >>= aKey2))
+ {
+ OSL_ENSURE(false, "UniversalContentBroker::configureUcb(): Bad arguments");
+ return false;
+ }
+
+ ContentProviderDataList aData;
+ if (!getContentProviderData(aKey1, aKey2, aData))
+ {
+ OSL_ENSURE(false, "UniversalContentBroker::configureUcb(): No configuration");
+ return false;
+ }
+
+ prepareAndRegister(aData);
+
+ return true;
+}
+
+void UniversalContentBroker::prepareAndRegister(
+ const ContentProviderDataList& rData)
+{
+ ContentProviderDataList::const_iterator aEnd(rData.end());
+ for (ContentProviderDataList::const_iterator aIt(rData.begin());
+ aIt != aEnd; ++aIt)
+ {
+ rtl::OUString aProviderArguments;
+ if (fillPlaceholders(aIt->Arguments,
+ m_aArguments,
+ &aProviderArguments))
+ {
+ registerAtUcb(this,
+ m_xSMgr,
+ aIt->ServiceName,
+ aProviderArguments,
+ aIt->URLTemplate,
+ 0);
+
+ }
+ else
+ OSL_ENSURE(false,
+ "UniversalContentBroker::prepareAndRegister(): Bad argument placeholders");
+ }
+}
+
+//=========================================================================
+bool UniversalContentBroker::getContentProviderData(
+ const rtl::OUString & rKey1,
+ const rtl::OUString & rKey2,
+ ContentProviderDataList & rListToFill )
+{
+ if ( !m_xSMgr.is() || !rKey1.getLength() || !rKey2.getLength() )
+ {
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - Invalid argument!" );
+ return false;
+ }
+
+ try
+ {
+ uno::Reference< lang::XMultiServiceFactory > xConfigProv(
+ m_xSMgr->createInstance(
+ rtl::OUString::createFromAscii(
+ "com.sun.star.configuration.ConfigurationProvider" ) ),
+ uno::UNO_QUERY_THROW );
+
+ rtl::OUStringBuffer aFullPath;
+ aFullPath.appendAscii( CONFIG_CONTENTPROVIDERS_KEY "/['" );
+ makeAndAppendXMLName( aFullPath, rKey1 );
+ aFullPath.appendAscii( "']/SecondaryKeys/['" );
+ makeAndAppendXMLName( aFullPath, rKey2 );
+ aFullPath.appendAscii( "']/ProviderData" );
+
+ uno::Sequence< uno::Any > aArguments( 1 );
+ beans::PropertyValue aProperty;
+ aProperty.Name
+ = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) );
+ aProperty.Value <<= aFullPath.makeStringAndClear();
+ aArguments[ 0 ] <<= aProperty;
+
+ uno::Reference< uno::XInterface > xInterface(
+ xConfigProv->createInstanceWithArguments(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationAccess" ) ),
+ aArguments ) );
+
+ if ( !m_xNotifier.is() )
+ {
+ m_xNotifier = uno::Reference< util::XChangesNotifier >(
+ xInterface, uno::UNO_QUERY_THROW );
+
+ m_xNotifier->addChangesListener( this );
+ }
+
+ uno::Reference< container::XNameAccess > xNameAccess(
+ xInterface, uno::UNO_QUERY_THROW );
+
+ uno::Sequence< rtl::OUString > aElems = xNameAccess->getElementNames();
+ const rtl::OUString* pElems = aElems.getConstArray();
+ sal_Int32 nCount = aElems.getLength();
+
+ if ( nCount > 0 )
+ {
+ uno::Reference< container::XHierarchicalNameAccess >
+ xHierNameAccess( xInterface, uno::UNO_QUERY_THROW );
+
+ // Iterate over children.
+ for ( sal_Int32 n = 0; n < nCount; ++n )
+ {
+
+ try
+ {
+
+ ContentProviderData aInfo;
+
+ rtl::OUStringBuffer aElemBuffer;
+ aElemBuffer.appendAscii( "['" );
+ makeAndAppendXMLName( aElemBuffer, pElems[ n ] );
+ aElemBuffer.appendAscii( "']" );
+
+ createContentProviderData(aElemBuffer.makeStringAndClear(), xHierNameAccess, aInfo);
+
+ rListToFill.push_back( aInfo );
+ }
+ catch ( container::NoSuchElementException& )
+ {
+ // getByHierarchicalName
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - "
+ "caught NoSuchElementException!" );
+ }
+ }
+ }
+ }
+ catch ( uno::RuntimeException& )
+ {
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - caught RuntimeException!" );
+ return false;
+ }
+ catch ( uno::Exception& )
+ {
+ // createInstance, createInstanceWithArguments
+
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - caught Exception!" );
+ return false;
+ }
+
+ return true;
+}
+
+void UniversalContentBroker::createContentProviderData(
+ const rtl::OUString & rProvider,
+ const uno::Reference< container::XHierarchicalNameAccess >& rxHierNameAccess,
+ ContentProviderData & rInfo)
+{
+ // Obtain service name.
+ rtl::OUStringBuffer aKeyBuffer (rProvider);
+ aKeyBuffer.appendAscii( "/ServiceName" );
+
+ rtl::OUString aValue;
+ if ( !( rxHierNameAccess->getByHierarchicalName(
+ aKeyBuffer.makeStringAndClear() ) >>= aValue ) )
+ {
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - "
+ "Error getting item value!" );
+ }
+
+ rInfo.ServiceName = aValue;
+
+ // Obtain URL Template.
+ aKeyBuffer.append(rProvider);
+ aKeyBuffer.appendAscii( "/URLTemplate" );
+
+ if ( !( rxHierNameAccess->getByHierarchicalName(
+ aKeyBuffer.makeStringAndClear() ) >>= aValue ) )
+ {
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - "
+ "Error getting item value!" );
+ }
+
+ rInfo.URLTemplate = aValue;
+
+ // Obtain Arguments.
+ aKeyBuffer.append(rProvider);
+ aKeyBuffer.appendAscii( "/Arguments" );
+
+ if ( !( rxHierNameAccess->getByHierarchicalName(
+ aKeyBuffer.makeStringAndClear() ) >>= aValue ) )
+ {
+ OSL_ENSURE( false,
+ "UniversalContentBroker::getContentProviderData - "
+ "Error getting item value!" );
+ }
+
+ rInfo.Arguments = aValue;
+}
+
//=========================================================================
//
// ProviderListEntry_Impl implementation.
@@ -545,4 +954,3 @@ Reference< XContentProvider > ProviderListEntry_Impl::resolveProvider() const
return m_xResolvedProvider;
}
-
diff --git a/ucb/source/core/ucb.hxx b/ucb/source/core/ucb.hxx
index 12bb730f27bb..0e44c5bc99b5 100644
--- a/ucb/source/core/ucb.hxx
+++ b/ucb/source/core/ucb.hxx
@@ -37,13 +37,20 @@
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/util/XChangesListener.hpp>
+#include <com/sun/star/util/XChangesNotifier.hpp>
+#include <com/sun/star/container/XContainer.hpp>
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+
#include <rtl/ustrbuf.hxx>
#include <cppuhelper/weak.hxx>
#include <osl/mutex.hxx>
#include <osl/interlck.h>
#include <ucbhelper/macros.hxx>
#include "providermap.hxx"
+#include <ucbhelper/registerucb.hxx>
+#include <vector>
//=========================================================================
#define UCB_SERVICE_NAME "com.sun.star.ucb.UniversalContentBroker"
@@ -66,7 +73,8 @@ class UniversalContentBroker :
public com::sun::star::ucb::XContentProviderManager,
public com::sun::star::ucb::XContentProvider,
public com::sun::star::ucb::XContentIdentifierFactory,
- public com::sun::star::ucb::XCommandProcessor
+ public com::sun::star::ucb::XCommandProcessor,
+ public com::sun::star::util::XChangesListener
{
public:
UniversalContentBroker( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rXSMgr );
@@ -162,6 +170,14 @@ public:
abort( sal_Int32 CommandId )
throw( com::sun::star::uno::RuntimeException );
+ // XChangesListener
+ virtual void SAL_CALL changesOccurred( const com::sun::star::util::ChangesEvent& Event )
+ throw( com::sun::star::uno::RuntimeException );
+
+ // XEventListener ( base of XChangesLisetenr )
+ virtual void SAL_CALL disposing( const com::sun::star::lang::EventObject& Source )
+ throw( com::sun::star::uno::RuntimeException );
+
private:
com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider >
queryContentProvider( const rtl::OUString& Identifier,
@@ -177,8 +193,29 @@ private:
com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( com::sun::star::uno::Exception );
+
+ bool configureUcb()
+ throw ( com::sun::star::uno::RuntimeException);
+
+ bool getContentProviderData(
+ const rtl::OUString & rKey1,
+ const rtl::OUString & rKey2,
+ ucbhelper::ContentProviderDataList & rListToFill);
+
+ void prepareAndRegister( const ucbhelper::ContentProviderDataList& rData);
+
+ void createContentProviderData(
+ const rtl::OUString& rProvider,
+ const com::sun::star::uno::Reference< com::sun::star::container::XHierarchicalNameAccess >& rxHierNameAccess,
+ ucbhelper::ContentProviderData& rInfo);
+
com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
+
+ com::sun::star::uno::Reference<
+ com::sun::star::util::XChangesNotifier > m_xNotifier;
+
+ com::sun::star::uno::Sequence< com::sun::star::uno::Any > m_aArguments;
ProviderMap_Impl m_aProviders;
osl::Mutex m_aMutex;
cppu::OInterfaceContainerHelper* m_pDisposeEventListeners;
diff --git a/ucbhelper/inc/ucbhelper/configureucb.hxx b/ucbhelper/inc/ucbhelper/configureucb.hxx
deleted file mode 100644
index 2e70467a4e9f..000000000000
--- a/ucbhelper/inc/ucbhelper/configureucb.hxx
+++ /dev/null
@@ -1,201 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _UCBHELPER_CONFIGUREUCB_HXX_
-#define _UCBHELPER_CONFIGUREUCB_HXX_
-
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/uno/RuntimeException.hpp>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <rtl/ustring.hxx>
-
-#include <vector>
-#include "ucbhelper/ucbhelperdllapi.h"
-
-namespace com { namespace sun { namespace star {
- namespace lang { class XMultiServiceFactory; }
- namespace ucb {
- class XContentProvider;
- class XContentProviderManager;
- }
- namespace uno { class Any; }
-} } }
-
-namespace ucbhelper {
-
-//============================================================================
-/** Information about a registered content provider, passed from
- <method>configureUcb</method> to <method>unconfigureUcb</method> (and from
- <method>registerAtUcb</method> to <method>deregisterFromUcb</method>).
- */
-struct ContentProviderRegistrationInfo
-{
- /** The registered content provider (or null if registration failed).
- */
- com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider >
- m_xProvider;
-
- /** The arguments the content provider was instantiated with.
- */
- rtl::OUString m_aArguments;
-
- /** The URL template the content provider is registered on.
- */
- rtl::OUString m_aTemplate;
-};
- //@@@ if registerucb.hxx were exported, too, this might better reside in
- // there...
-
-typedef std::vector< ContentProviderRegistrationInfo >
- ContentProviderRegistrationInfoList;
-
-//============================================================================
-/** Information about a content provider, passed to
- <method>configureUcb</method>.
- */
-struct ContentProviderData
-{
- /** The UNO service name to use to instanciate the content provider.
- */
- rtl::OUString ServiceName;
-
- /** The URL template to use to instanciate the content provider.
- */
- rtl::OUString URLTemplate;
-
- /** The arguments to use to instanciate the content provider.
- */
- rtl::OUString Arguments;
-
- ContentProviderData() {};
- ContentProviderData( const rtl::OUString & rService,
- const rtl::OUString & rTemplate,
- const rtl::OUString & rArgs )
- : ServiceName( rService ), URLTemplate( rTemplate ), Arguments( rArgs ) {}
-};
-
-typedef std::vector< ContentProviderData > ContentProviderDataList;
-
-//============================================================================
-/** Configure a (newly instantiated) Universal Content Broker.
-
- @descr This function tries to register at the given content provider
- manager all the content provider services listed under a given key in the
- configuration database.
-
- @param rManager A content provider manager (normally, this would be a
- newly intantiated UCB).
-
- @param rServiceFactory A service factory through which to obtain the
- various services required.
-
- @param rData A list containing the data for the content providers for
- the UCB to configure.
-
- @pInfos If not null, an entry will be added to this vector for every
- content provider that is registered (sucessfully or not).
-
- @return True if the UCB has successfuly been configured (though not all
- content providers have necessarily been registered due to individual
- problems).
- */
-bool
-configureUcb(
- com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentProviderManager > const &
- rManager,
- com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory > const &
- rServiceFactory,
- ContentProviderDataList const & rData,
- ContentProviderRegistrationInfoList * pInfos)
- throw (com::sun::star::uno::RuntimeException);
-
-
-//============================================================================
-/** Configure a (newly instantiated) Universal Content Broker.
-
- @descr This function tries to register at the given content provider
- manager all the content provider services listed under a given key in the
- configuration database.
-
- @param rManager A content provider manager (normally, this would be a
- newly intantiated UCB).
-
- @param rServiceFactory A service factory through which to obtain the
- various services required.
-
- @param rArguments A sequence of at least two strings: the primary and
- secondary key addressing a chosen UCB configuration in the configuration
- database. The sequence can be longer, in which case the excess elements
- must be strings that form key/value pairs. These key/value pairs will be
- used to replace placeholders in the data from the configuration database
- with (dynamic) values. This is a (rather unstructured) sequence of
- <type>Any<type/>s, since normally this parameter will simply be forwarded
- by the UCB's <method>initialize<method/> method, which has a parameter of
- the same type.
-
- @pInfos If not null, an entry will be added to this vector for every
- content provider that is registered (sucessfully or not).
-
- @return True if the UCB has successfuly been configured (though not all
- content providers have necessarily been registered due to individual
- problems).
- */
-UCBHELPER_DLLPUBLIC bool
-configureUcb(
- com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentProviderManager > const &
- rManager,
- com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory > const &
- rServiceFactory,
- com::sun::star::uno::Sequence< com::sun::star::uno::Any > const &
- rArguments,
- std::vector< ContentProviderRegistrationInfo > * pInfos)
- throw (com::sun::star::uno::RuntimeException);
-
-//============================================================================
-/** Undo the configuration of a Universal Content Broker.
-
- @descr This function is the reverse of <method>configureUcb</method>.
-
- @param rManager A content provider manager.
-
- @param rInfos Information about all the registered content providers.
- */
-void
-unconfigureUcb(
- com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentProviderManager > const &
- rManager,
- std::vector< ContentProviderRegistrationInfo > const & rInfos)
- throw (com::sun::star::uno::RuntimeException);
-
-}
-
-#endif // _UCBHELPER_CONFIGUREUCB_HXX_
diff --git a/ucbhelper/inc/ucbhelper/contentbroker.hxx b/ucbhelper/inc/ucbhelper/contentbroker.hxx
index eea72cc689e0..54139d3ffdea 100644
--- a/ucbhelper/inc/ucbhelper/contentbroker.hxx
+++ b/ucbhelper/inc/ucbhelper/contentbroker.hxx
@@ -41,7 +41,7 @@ namespace com { namespace sun { namespace star { namespace ucb {
class XContentProviderManager;
class XCommandProcessor;
} } } }
-#include <ucbhelper/configureucb.hxx>
+#include <ucbhelper/registerucb.hxx>
#include "ucbhelper/ucbhelperdllapi.h"
namespace ucbhelper
diff --git a/ucbhelper/inc/ucbhelper/registerucb.hxx b/ucbhelper/inc/ucbhelper/registerucb.hxx
new file mode 100644
index 000000000000..e2427248dce2
--- /dev/null
+++ b/ucbhelper/inc/ucbhelper/registerucb.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org 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 version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+************************************************************************/
+
+#ifndef _UCBHELPER_REGISTERUCB_HXX_
+#define _UCBHELPER_REGISTERUCB_HXX_
+
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/ucb/XContentProvider.hpp>
+#include <com/sun/star/ucb/XContentProviderManager.hpp>
+#include <vector>
+
+#include "ucbhelper/ucbhelperdllapi.h"
+
+namespace com { namespace sun { namespace star {
+ namespace lang { class XMultiServiceFactory; }
+} } }
+
+namespace rtl { class OUString; }
+
+namespace ucbhelper {
+
+//============================================================================
+/** Information about a registered content provider.
+ */
+struct ContentProviderRegistrationInfo
+{
+ /** The registered content provider (or null if registration failed).
+ */
+ com::sun::star::uno::Reference< com::sun::star::ucb::XContentProvider >
+ m_xProvider;
+
+ /** The arguments the content provider was instantiated with.
+ */
+ rtl::OUString m_aArguments;
+
+ /** The URL template the content provider is registered on.
+ */
+ rtl::OUString m_aTemplate;
+};
+
+typedef std::vector< ContentProviderRegistrationInfo >
+ ContentProviderRegistrationInfoList;
+
+//============================================================================
+/** Information about a content provider, passed to
+ <method>configureUcb</method>.
+ */
+struct ContentProviderData
+{
+ /** The UNO service name to use to instanciate the content provider.
+ */
+ rtl::OUString ServiceName;
+
+ /** The URL template to use to instanciate the content provider.
+ */
+ rtl::OUString URLTemplate;
+
+ /** The arguments to use to instanciate the content provider.
+ */
+ rtl::OUString Arguments;
+
+ ContentProviderData() {};
+ ContentProviderData( const rtl::OUString & rService,
+ const rtl::OUString & rTemplate,
+ const rtl::OUString & rArgs )
+ : ServiceName( rService ), URLTemplate( rTemplate ), Arguments( rArgs ) {}
+};
+
+typedef std::vector< ContentProviderData > ContentProviderDataList;
+//============================================================================
+/** Register a content provider at a Universal Content Broker.
+
+ @param rManager A content provider manager (normally, this would be a
+ UCB). May be null, which is only useful if the content provider is an
+ <type>XParamterizedContentProvider</type>s.
+
+ @param rServiceFactory A factory through which to obtain the required
+ services.
+
+ @param rName The service name of the content provider.
+
+ @param rArguments Any arguments to instantiate the content provider with.
+
+ @param rTemplate The URL template to register the content provider on.
+
+ @param pInfo If not null, this output parameter is filled with
+ information about the (atemptively) registered provider.
+ */
+
+UCBHELPER_DLLPUBLIC bool registerAtUcb(
+ com::sun::star::uno::Reference<
+ com::sun::star::ucb::XContentProviderManager > const &
+ rManager,
+ com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory > const &
+ rServiceFactory,
+ rtl::OUString const & rName,
+ rtl::OUString const & rArguments,
+ rtl::OUString const & rTemplate,
+ ContentProviderRegistrationInfo * pInfo)
+ throw (com::sun::star::uno::RuntimeException);
+
+}
+#endif // _UCBHELPER_REGISTERUCB_HXX_
diff --git a/ucbhelper/prj/d.lst b/ucbhelper/prj/d.lst
index 64da268b6143..21a46483789b 100644
--- a/ucbhelper/prj/d.lst
+++ b/ucbhelper/prj/d.lst
@@ -9,7 +9,7 @@
mkdir: %_DEST%\inc%_EXT%\ucbhelper
..\inc\ucbhelper\configurationkeys.hxx %_DEST%\inc%_EXT%\ucbhelper\configurationkeys.hxx
-..\inc\ucbhelper\configureucb.hxx %_DEST%\inc%_EXT%\ucbhelper\configureucb.hxx
+..\inc\ucbhelper\registerucb.hxx %_DEST%\inc%_EXT%\ucbhelper\registerucb.hxx
..\inc\ucbhelper\content.hxx %_DEST%\inc%_EXT%\ucbhelper\content.hxx
..\inc\ucbhelper\contentbroker.hxx %_DEST%\inc%_EXT%\ucbhelper\contentbroker.hxx
..\inc\ucbhelper\commandenvironment.hxx %_DEST%\inc%_EXT%\ucbhelper\commandenvironment.hxx
diff --git a/ucbhelper/source/client/contentbroker.cxx b/ucbhelper/source/client/contentbroker.cxx
index 7e0e7f3657ca..408ff6af0dee 100644
--- a/ucbhelper/source/client/contentbroker.cxx
+++ b/ucbhelper/source/client/contentbroker.cxx
@@ -298,14 +298,18 @@ bool ContentBroker_Impl::initialize()
if ( m_xProviderMgr.is() )
{
- if ( !configureUcb( m_xProviderMgr,
- m_xSMgr,
- m_aProvData,
- 0 ) )
+ ContentProviderDataList::const_iterator aEnd(m_aProvData.end());
+ for (ContentProviderDataList::const_iterator aIt(m_aProvData.begin());
+ aIt != aEnd; ++aIt)
{
- OSL_ENSURE( false, "Failed to configure UCB!" );
- return false;
+ registerAtUcb(m_xProviderMgr,
+ m_xSMgr,
+ aIt->ServiceName,
+ aIt->Arguments,
+ aIt->URLTemplate,
+ 0);
}
+
}
}
}
diff --git a/ucbhelper/source/provider/makefile.mk b/ucbhelper/source/provider/makefile.mk
index db06a5df131c..5999192f7bdb 100644
--- a/ucbhelper/source/provider/makefile.mk
+++ b/ucbhelper/source/provider/makefile.mk
@@ -43,7 +43,6 @@ ENABLE_EXCEPTIONS=TRUE
.IF "$(header)" == ""
SLOFILES=\
- $(SLO)$/configureucb.obj \
$(SLO)$/contentidentifier.obj \
$(SLO)$/providerhelper.obj \
$(SLO)$/contenthelper.obj \
@@ -53,7 +52,6 @@ SLOFILES=\
$(SLO)$/resultsetmetadata.obj \
$(SLO)$/resultset.obj \
$(SLO)$/resultsethelper.obj \
- $(SLO)$/provconf.obj \
$(SLO)$/commandenvironmentproxy.obj \
$(SLO)$/interactionrequest.obj \
$(SLO)$/simpleinteractionrequest.obj \
diff --git a/ucbhelper/source/provider/registerucb.cxx b/ucbhelper/source/provider/registerucb.cxx
index 0a749c9ccb5c..e6ccaf4743a8 100644
--- a/ucbhelper/source/provider/registerucb.cxx
+++ b/ucbhelper/source/provider/registerucb.cxx
@@ -27,7 +27,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_ucbhelper.hxx"
-#include <registerucb.hxx>
+#include <ucbhelper/registerucb.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ucb/XContentProviderManager.hpp>
#include <com/sun/star/ucb/XParameterizedContentProvider.hpp>
@@ -35,7 +35,6 @@
#include <com/sun/star/uno/RuntimeException.hpp>
#include "osl/diagnose.h"
-#include <ucbhelper/configureucb.hxx>
using namespace com::sun::star;
@@ -162,41 +161,4 @@ registerAtUcb(
return bSuccess;
}
-//============================================================================
-//
-// deregisterFromUcb
-//
-//============================================================================
-
-void
-deregisterFromUcb(
- uno::Reference< ucb::XContentProviderManager > const & rManager,
- ContentProviderRegistrationInfo const & rInfo)
- throw (uno::RuntimeException)
-{
- uno::Reference< ucb::XContentProvider >
- xProvider(rInfo.m_xProvider);
- uno::Reference< ucb::XParameterizedContentProvider >
- xParameterized(xProvider, uno::UNO_QUERY);
- if (xParameterized.is())
- {
- uno::Reference< ucb::XContentProvider > xInstance;
- try
- {
- xInstance
- = xParameterized->deregisterInstance(rInfo.m_aTemplate,
- rInfo.m_aArguments);
- }
- catch (lang::IllegalArgumentException const &) {}
-
- if (xInstance.is())
- xProvider = xInstance;
- }
-
- if (rManager.is())
- rManager->deregisterContentProvider(xProvider, rInfo.m_aTemplate);
- //@@@ if this fails, a roll-back of deregisterInstance() is
- // missing
-}
-
}
diff --git a/ucbhelper/source/provider/registerucb.hxx b/ucbhelper/source/provider/registerucb.hxx
deleted file mode 100644
index f17321c76cd5..000000000000
--- a/ucbhelper/source/provider/registerucb.hxx
+++ /dev/null
@@ -1,96 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _UCBHELPER_REGISTERUCB_HXX_
-#define _UCBHELPER_REGISTERUCB_HXX_
-
-#include <com/sun/star/uno/RuntimeException.hpp>
-#include <com/sun/star/uno/Reference.h>
-
-namespace com { namespace sun { namespace star {
- namespace lang { class XMultiServiceFactory; }
- namespace ucb { class XContentProviderManager; }
-} } }
-namespace rtl { class OUString; }
-
-namespace ucbhelper {
-
-struct ContentProviderRegistrationInfo;
-
-//============================================================================
-/** Register a content provider at a Universal Content Broker.
-
- @param rManager A content provider manager (normally, this would be a
- UCB). May be null, which is only useful if the content provider is an
- <type>XParamterizedContentProvider</type>s.
-
- @param rServiceFactory A factory through which to obtain the required
- services.
-
- @param rName The service name of the content provider.
-
- @param rArguments Any arguments to instantiate the content provider with.
-
- @param rTemplate The URL template to register the content provider on.
-
- @param pInfo If not null, this output parameter is filled with
- information about the (atemptively) registered provider.
- */
-bool
-registerAtUcb(
- com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentProviderManager > const &
- rManager,
- com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory > const &
- rServiceFactory,
- rtl::OUString const & rName,
- rtl::OUString const & rArguments,
- rtl::OUString const & rTemplate,
- ContentProviderRegistrationInfo * pInfo)
- throw (com::sun::star::uno::RuntimeException);
-
-//============================================================================
-/** Deregister a content provider from a Universal Content Broker.
-
- @param rManager A content provider manager (normally, this would be a
- UCB). May be null, which is only useful if the content provider is an
- <type>XParamterizedContentProvider</type>s.
-
- @param rInfo Information about the content provider to deregister.
- */
-void
-deregisterFromUcb(
- com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentProviderManager > const &
- rManager,
- ContentProviderRegistrationInfo const & rInfo)
- throw (com::sun::star::uno::RuntimeException);
-
-}
-
-#endif // _UCBHELPER_REGISTERUCB_HXX_
diff --git a/unoxml/qa/complex/RDFRepositoryTest.java b/unoxml/qa/complex/RDFRepositoryTest.java
index 52f37c40dad6..f3f9cbd8ae41 100644
--- a/unoxml/qa/complex/RDFRepositoryTest.java
+++ b/unoxml/qa/complex/RDFRepositoryTest.java
@@ -42,6 +42,7 @@ import com.sun.star.lang.WrappedTargetException;
import com.sun.star.lang.WrappedTargetRuntimeException;
import com.sun.star.beans.XPropertySet;
import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.Pair;
import com.sun.star.beans.StringPair;
import com.sun.star.container.XEnumeration;
import com.sun.star.container.ElementExistException;
@@ -460,9 +461,10 @@ public class RDFRepositoryTest extends ComplexTestCase
XTextRange xTR = new TestRange(content);
XMetadatable xM = (XMetadatable) xTR;
- Statement[] result = xRep.getStatementRDFa((XMetadatable)xTR);
+ Pair<Statement[], Boolean> result =
+ xRep.getStatementRDFa((XMetadatable)xTR);
assure("RDFa: get: not empty (initial)",
- 0 == result.length);
+ 0 == result.First.length);
try {
xRep.setStatementRDFa(foo, new XURI[] {}, xM, "", null);
@@ -484,7 +486,8 @@ public class RDFRepositoryTest extends ComplexTestCase
result = xRep.getStatementRDFa((XMetadatable)xTR);
assure("RDFa: get: without content",
- 1 == result.length && eq((Statement)result[0], x_FooBarTRLit));
+ !result.Second && (1 == result.First.length)
+ && eq((Statement)result.First[0], x_FooBarTRLit));
//FIXME: do this?
xTR.setString(lit.getStringValue());
@@ -496,13 +499,13 @@ public class RDFRepositoryTest extends ComplexTestCase
*/
Statement x_FooBarLittype = new Statement(foo, bar, littype, null);
- Statement x_FooLabelLit = new Statement(foo, rdfslabel, lit, null);
xRep.setStatementRDFa(foo, new XURI[] { bar }, xM, "42", uint);
result = xRep.getStatementRDFa((XMetadatable)xTR);
assure("RDFa: get: with content",
- 2 == result.length && eq((Statement)result[0], x_FooLabelLit)
- && eq((Statement)result[1], x_FooBarLittype));
+ result.Second &&
+ (1 == result.First.length) &&
+ eq((Statement)result.First[0], x_FooBarLittype));
//FIXME: do this?
xTR.setString(content);
@@ -518,7 +521,7 @@ public class RDFRepositoryTest extends ComplexTestCase
result = xRep.getStatementRDFa((XMetadatable)xTR);
assure("RDFa: get: not empty (removed)",
- 0 == result.length);
+ 0 == result.First.length);
xRep.setStatementRDFa(foo, new XURI[] { foo, bar, baz }, xM,
"", null);
@@ -527,14 +530,15 @@ public class RDFRepositoryTest extends ComplexTestCase
Statement x_FooBazTRLit = new Statement(foo, baz, trlit, null);
result = xRep.getStatementRDFa((XMetadatable) xTR);
assure("RDFa: get: without content (multiple predicates, reinsert)",
- eq(result, new Statement[] {
+ !result.Second &&
+ eq(result.First, new Statement[] {
x_FooFooTRLit, x_FooBarTRLit, x_FooBazTRLit }));
xRep.removeStatementRDFa((XMetadatable)xTR);
result = xRep.getStatementRDFa((XMetadatable) xTR);
assure("RDFa: get: not empty (re-removed)",
- 0 == result.length);
+ 0 == result.First.length);
log.println("...done");
diff --git a/unoxml/source/rdf/librdf_repository.cxx b/unoxml/source/rdf/librdf_repository.cxx
index e111c1e5176b..72c89aeac19d 100644
--- a/unoxml/source/rdf/librdf_repository.cxx
+++ b/unoxml/source/rdf/librdf_repository.cxx
@@ -27,9 +27,19 @@
#include "librdf_repository.hxx"
-#include <comphelper/stlunosequence.hxx>
-#include <comphelper/sequenceasvector.hxx>
-#include <comphelper/makesequence.hxx>
+#include <string.h>
+
+#include <set>
+#include <map>
+#include <functional>
+#include <algorithm>
+
+#include <boost/utility.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+#include <boost/bind.hpp>
+
+#include <librdf.h>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
@@ -37,7 +47,7 @@
#include <com/sun/star/lang/IllegalArgumentException.hpp>
#include <com/sun/star/io/XSeekableInputStream.hpp>
#include <com/sun/star/text/XTextRange.hpp>
-#include "com/sun/star/rdf/XDocumentRepository.hpp"
+#include <com/sun/star/rdf/XDocumentRepository.hpp>
#include <com/sun/star/rdf/XLiteral.hpp>
#include <com/sun/star/rdf/FileFormat.hpp>
#include <com/sun/star/rdf/URIs.hpp>
@@ -45,24 +55,15 @@
#include <com/sun/star/rdf/URI.hpp>
#include <com/sun/star/rdf/Literal.hpp>
+#include <rtl/ref.hxx>
+#include <rtl/ustring.hxx>
#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase3.hxx>
#include <cppuhelper/basemutex.hxx>
-#include <rtl/ref.hxx>
-#include <rtl/ustring.hxx>
-
-#include <librdf.h>
-
-#include <boost/utility.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/shared_array.hpp>
-#include <boost/bind.hpp>
-
-#include <map>
-#include <functional>
-#include <algorithm>
-#include <string.h>
+#include <comphelper/stlunosequence.hxx>
+#include <comphelper/sequenceasvector.hxx>
+#include <comphelper/makesequence.hxx>
/**
@@ -125,66 +126,53 @@ bool isInternalContext(librdf_node *i_pNode) throw ()
////////////////////////////////////////////////////////////////////////////
-#if 0
-class librdf_Statement:
- public ::cppu::WeakImplHelper1<
- rdf::XStatement>
+// n.b.: librdf destructor functions dereference null pointers!
+// so they need to be wrapped to be usable with boost::shared_ptr.
+static void safe_librdf_free_world(librdf_world *const world)
{
-public:
-
- librdf_Statement(
- uno::Reference< rdf::XResource > const & i_xSubject,
- uno::Reference< rdf::XResource > const & i_xPredicate,
- uno::Reference< rdf::XNode > const & i_xObject,
- uno::Reference< rdf::XURI > const & i_xGraph)
- : m_xSubject(i_xSubject), m_xPredicate(i_xPredicate),
- m_xObject(i_xObject), m_xGraph(i_xGraph)
- { }
- virtual ~librdf_Statement() {}
-
- // ::com::sun::star::rdf::XStatement:
- virtual uno::Reference< rdf::XResource > SAL_CALL getSubject()
- throw (uno::RuntimeException);
- virtual uno::Reference< rdf::XResource > SAL_CALL getPredicate()
- throw (uno::RuntimeException);
- virtual uno::Reference< rdf::XNode > SAL_CALL getObject()
- throw (uno::RuntimeException);
- virtual uno::Reference< rdf::XURI > SAL_CALL getGraph()
- throw (uno::RuntimeException);
-
-private:
-
- uno::Reference< rdf::XResource > m_xSubject;
- uno::Reference< rdf::XResource > m_xPredicate;
- uno::Reference< rdf::XNode > m_xObject;
- uno::Reference< rdf::XURI > m_xGraph;
-};
-
-// ::com::sun::star::rdf::XStatement:
-uno::Reference< rdf::XResource > SAL_CALL
-librdf_Statement::getSubject() throw (uno::RuntimeException)
+ if (world) { librdf_free_world(world); }
+}
+static void safe_librdf_free_model(librdf_model *const model)
{
- return m_xSubject;
+ if (model) { librdf_free_model(model); }
}
-
-uno::Reference< rdf::XResource > SAL_CALL
-librdf_Statement::getPredicate() throw (uno::RuntimeException)
+static void safe_librdf_free_node(librdf_node* node)
{
- return m_xPredicate;
+ if (node) { librdf_free_node(node); }
}
-
-uno::Reference< rdf::XNode > SAL_CALL
-librdf_Statement::getObject() throw (uno::RuntimeException)
+static void safe_librdf_free_parser(librdf_parser *const parser)
{
- return m_xObject;
+ if (parser) { librdf_free_parser(parser); }
}
-
-uno::Reference< rdf::XURI > SAL_CALL
-librdf_Statement::getGraph() throw (uno::RuntimeException)
+static void safe_librdf_free_query(librdf_query *const query)
{
- return m_xGraph;
+ if (query) { librdf_free_query(query); }
+}
+static void
+safe_librdf_free_query_results(librdf_query_results *const query_results)
+{
+ if (query_results) { librdf_free_query_results(query_results); }
+}
+static void safe_librdf_free_serializer(librdf_serializer *const serializer)
+{
+ if (serializer) { librdf_free_serializer(serializer); }
+}
+static void safe_librdf_free_statement(librdf_statement *const statement)
+{
+ if (statement) { librdf_free_statement(statement); }
+}
+static void safe_librdf_free_storage(librdf_storage *const storage)
+{
+ if (storage) { librdf_free_storage(storage); }
+}
+static void safe_librdf_free_stream(librdf_stream *const stream)
+{
+ if (stream) { librdf_free_stream(stream); }
+}
+static void safe_librdf_free_uri(librdf_uri *const uri)
+{
+ if (uri) { librdf_free_uri(uri); }
}
-#endif
////////////////////////////////////////////////////////////////////////////
@@ -220,13 +208,9 @@ public:
uno::Reference<rdf::XResource>
convertToXResource(librdf_node* i_pNode) const;
uno::Reference<rdf::XNode> convertToXNode(librdf_node* i_pNode) const;
-// uno::Reference<rdf::XStatement>
-// convertToXStatement(librdf_statement* i_pStmt, librdf_node* i_pContext)
-// const;
rdf::Statement
convertToStatement(librdf_statement* i_pStmt, librdf_node* i_pContext)
const;
- uno::Reference<rdf::XURI> getRDFsLabel() const;
private:
uno::Reference< uno::XComponentContext > m_xContext;
@@ -325,8 +309,8 @@ public:
const uno::Reference< rdf::XMetadatable > & i_xElement)
throw (uno::RuntimeException, lang::IllegalArgumentException,
rdf::RepositoryException);
- virtual uno::Sequence<rdf::Statement> SAL_CALL getStatementRDFa(
- const uno::Reference< rdf::XMetadatable > & i_xElement)
+ virtual beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > SAL_CALL
+ getStatementRDFa(uno::Reference< rdf::XMetadatable > const& i_xElement)
throw (uno::RuntimeException, lang::IllegalArgumentException,
rdf::RepositoryException);
virtual uno::Reference< container::XEnumeration > SAL_CALL
@@ -404,6 +388,9 @@ private:
/// type conversion helper
librdf_TypeConverter m_TypeConverter;
+
+ /// set of xml:ids of elements with xhtml:content
+ ::std::set< ::rtl::OUString > m_RDFaXHTMLContentSet;
};
@@ -422,11 +409,13 @@ public:
librdf_GraphResult(librdf_Repository *i_pRepository,
::osl::Mutex & i_rMutex,
boost::shared_ptr<librdf_stream> const& i_pStream,
+ boost::shared_ptr<librdf_node> const& i_pContext,
boost::shared_ptr<librdf_query> const& i_pQuery =
boost::shared_ptr<librdf_query>() )
: m_xRep(i_pRepository)
, m_rMutex(i_rMutex)
, m_pQuery(i_pQuery)
+ , m_pContext(i_pContext)
, m_pStream(i_pStream)
{ };
@@ -449,8 +438,11 @@ private:
// the query (in case this is a result of a graph query)
// not that the redland documentation spells this out explicity, but
// queries must be freed only after all the results are completely read
- boost::shared_ptr<librdf_query> m_pQuery;
- boost::shared_ptr<librdf_stream> m_pStream;
+ boost::shared_ptr<librdf_query> const m_pQuery;
+ boost::shared_ptr<librdf_node> const m_pContext;
+ boost::shared_ptr<librdf_stream> const m_pStream;
+
+ librdf_node* getContext() const;
};
@@ -462,6 +454,17 @@ librdf_GraphResult::hasMoreElements() throw (uno::RuntimeException)
return m_pStream.get() && !librdf_stream_end(m_pStream.get());
}
+librdf_node* librdf_GraphResult::getContext() const
+{
+ if (!m_pStream.get() || librdf_stream_end(m_pStream.get()))
+ return NULL;
+ librdf_node *pCtxt( static_cast<librdf_node *>
+ (librdf_stream_get_context(m_pStream.get())) );
+ if (pCtxt)
+ return pCtxt;
+ return m_pContext.get();
+}
+
::com::sun::star::uno::Any SAL_CALL
librdf_GraphResult::nextElement()
throw (uno::RuntimeException, container::NoSuchElementException,
@@ -469,8 +472,8 @@ throw (uno::RuntimeException, container::NoSuchElementException,
{
::osl::MutexGuard g(m_rMutex);
if (!m_pStream.get() || !librdf_stream_end(m_pStream.get())) {
- librdf_node *pCtxt( static_cast<librdf_node *>
- (librdf_stream_get_context(m_pStream.get())) );
+ librdf_node * pCtxt = getContext();
+
librdf_statement *pStmt( librdf_stream_get_object(m_pStream.get()) );
if (!pStmt) {
rdf::QueryException e(::rtl::OUString::createFromAscii(
@@ -565,7 +568,7 @@ public:
void operator() (librdf_node** io_pArray) const throw ()
{
- std::for_each(io_pArray, io_pArray + m_Count, librdf_free_node);
+ std::for_each(io_pArray, io_pArray + m_Count, safe_librdf_free_node);
delete[] io_pArray;
}
};
@@ -778,9 +781,9 @@ osl::Mutex librdf_Repository::m_aMutex;
librdf_Repository::librdf_Repository(
uno::Reference< uno::XComponentContext > const & i_xContext)
: /*BaseMutex(),*/ m_xContext(i_xContext)
-// m_pWorld (static_cast<librdf_world *>(0), librdf_free_world ),
- , m_pStorage(static_cast<librdf_storage*>(0), librdf_free_storage)
- , m_pModel (static_cast<librdf_model *>(0), librdf_free_model )
+// m_pWorld (static_cast<librdf_world *>(0), safe_librdf_free_world ),
+ , m_pStorage(static_cast<librdf_storage*>(0), safe_librdf_free_storage)
+ , m_pModel (static_cast<librdf_model *>(0), safe_librdf_free_model )
, m_NamedGraphs()
, m_TypeConverter(i_xContext, *this)
{
@@ -788,7 +791,7 @@ librdf_Repository::librdf_Repository(
::osl::MutexGuard g(m_aMutex);
if (!m_NumInstances++) {
- m_pWorld.reset(m_TypeConverter.createWorld(), librdf_free_world);
+ m_pWorld.reset(m_TypeConverter.createWorld(), safe_librdf_free_world);
}
}
@@ -841,7 +844,7 @@ throw (uno::RuntimeException)
::osl::MutexGuard g(m_aMutex);
const boost::shared_ptr<librdf_node> pNode(
librdf_new_node_from_blank_identifier(m_pWorld.get(), NULL),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pNode) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::createBlankNode: "
@@ -930,7 +933,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_node> pContext(
librdf_new_node_from_uri_string(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (context.getStr())),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pContext) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::importGraph: "
@@ -942,7 +945,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_uri> pBaseURI(
librdf_new_uri(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (baseURI.getStr())),
- librdf_free_uri);
+ safe_librdf_free_uri);
if (!pBaseURI) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::importGraph: "
@@ -951,7 +954,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_parser> pParser(
librdf_new_parser(m_pWorld.get(), "rdfxml", NULL, NULL),
- librdf_free_parser);
+ safe_librdf_free_parser);
if (!pParser) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::importGraph: "
@@ -968,7 +971,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
librdf_parser_parse_counted_string_as_stream(pParser.get(),
reinterpret_cast<const unsigned char*>(buf.getConstArray()),
buf.getLength(), pBaseURI.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::ParseException(::rtl::OUString::createFromAscii(
"librdf_Repository::importGraph: "
@@ -1037,7 +1040,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_node> pContext(
librdf_new_node_from_uri_string(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (context.getStr())),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pContext) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::exportGraph: "
@@ -1048,7 +1051,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_uri> pBaseURI(
librdf_new_uri(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (baseURI.getStr())),
- librdf_free_uri);
+ safe_librdf_free_uri);
if (!pBaseURI) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::exportGraph: "
@@ -1057,7 +1060,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_stream> pStream(
librdf_model_context_as_stream(m_pModel.get(), pContext.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::RepositoryException(::rtl::OUString::createFromAscii(
"librdf_Repository::exportGraph: "
@@ -1067,7 +1070,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const char *format("rdfxml-abbrev");
const boost::shared_ptr<librdf_serializer> pSerializer(
librdf_new_serializer(m_pWorld.get(), format, NULL, NULL),
- librdf_free_serializer);
+ safe_librdf_free_serializer);
if (!pSerializer) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::exportGraph: "
@@ -1077,19 +1080,19 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
const boost::shared_ptr<librdf_uri> pRelativeURI(
librdf_new_uri(m_pWorld.get(), reinterpret_cast<const unsigned char*>
("http://feature.librdf.org/raptor-relativeURIs")),
- librdf_free_uri);
+ safe_librdf_free_uri);
const boost::shared_ptr<librdf_uri> pWriteBaseURI(
librdf_new_uri(m_pWorld.get(), reinterpret_cast<const unsigned char*>
("http://feature.librdf.org/raptor-writeBaseURI")),
- librdf_free_uri);
+ safe_librdf_free_uri);
const boost::shared_ptr<librdf_node> p0(
librdf_new_node_from_literal(m_pWorld.get(),
reinterpret_cast<const unsigned char*> ("0"), NULL, 0),
- librdf_free_node);
+ safe_librdf_free_node);
const boost::shared_ptr<librdf_node> p1(
librdf_new_node_from_literal(m_pWorld.get(),
reinterpret_cast<const unsigned char*> ("1"), NULL, 0),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pWriteBaseURI || !pRelativeURI || !p0 || !p1) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::exportGraph: "
@@ -1225,26 +1228,28 @@ throw (uno::RuntimeException, rdf::RepositoryException)
isMetadatableWithoutMetadata(i_xObject))
{
return new librdf_GraphResult(this, m_aMutex,
- ::boost::shared_ptr<librdf_stream>());
+ ::boost::shared_ptr<librdf_stream>(),
+ ::boost::shared_ptr<librdf_node>());
}
::osl::MutexGuard g(m_aMutex);
const boost::shared_ptr<librdf_statement> pStatement(
m_TypeConverter.mkStatement(m_pWorld.get(),
i_xSubject, i_xPredicate, i_xObject),
- librdf_free_statement);
+ safe_librdf_free_statement);
OSL_ENSURE(pStatement, "mkStatement failed");
const boost::shared_ptr<librdf_stream> pStream(
librdf_model_find_statements(m_pModel.get(), pStatement.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::RepositoryException(::rtl::OUString::createFromAscii(
"librdf_Repository::getStatements: "
"librdf_model_find_statements failed"), *this);
}
- return new librdf_GraphResult(this, m_aMutex, pStream);
+ return new librdf_GraphResult(this, m_aMutex, pStream,
+ ::boost::shared_ptr<librdf_node>());
}
@@ -1258,7 +1263,7 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
const boost::shared_ptr<librdf_query> pQuery(
librdf_new_query(m_pWorld.get(), s_sparql, NULL,
reinterpret_cast<const unsigned char*> (query.getStr()), NULL),
- librdf_free_query);
+ safe_librdf_free_query);
if (!pQuery) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::querySelect: "
@@ -1266,7 +1271,7 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
}
const boost::shared_ptr<librdf_query_results> pResults(
librdf_model_query_execute(m_pModel.get(), pQuery.get()),
- librdf_free_query_results);
+ safe_librdf_free_query_results);
if (!pResults || !librdf_query_results_is_bindings(pResults.get())) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::querySelect: "
@@ -1308,7 +1313,7 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
const boost::shared_ptr<librdf_query> pQuery(
librdf_new_query(m_pWorld.get(), s_sparql, NULL,
reinterpret_cast<const unsigned char*> (query.getStr()), NULL),
- librdf_free_query);
+ safe_librdf_free_query);
if (!pQuery) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::queryConstruct: "
@@ -1316,7 +1321,7 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
}
const boost::shared_ptr<librdf_query_results> pResults(
librdf_model_query_execute(m_pModel.get(), pQuery.get()),
- librdf_free_query_results);
+ safe_librdf_free_query_results);
if (!pResults || !librdf_query_results_is_graph(pResults.get())) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::queryConstruct: "
@@ -1324,14 +1329,15 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
}
const boost::shared_ptr<librdf_stream> pStream(
librdf_query_results_as_stream(pResults.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::queryConstruct: "
"librdf_query_results_as_stream failed"), *this);
}
- return new librdf_GraphResult(this, m_aMutex, pStream, pQuery);
+ return new librdf_GraphResult(this, m_aMutex, pStream,
+ ::boost::shared_ptr<librdf_node>(), pQuery);
}
::sal_Bool SAL_CALL
@@ -1345,7 +1351,7 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
const boost::shared_ptr<librdf_query> pQuery(
librdf_new_query(m_pWorld.get(), s_sparql, NULL,
reinterpret_cast<const unsigned char*> (query.getStr()), NULL),
- librdf_free_query);
+ safe_librdf_free_query);
if (!pQuery) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::queryAsk: "
@@ -1353,7 +1359,7 @@ throw (uno::RuntimeException, rdf::QueryException, rdf::RepositoryException)
}
const boost::shared_ptr<librdf_query_results> pResults(
librdf_model_query_execute(m_pModel.get(), pQuery.get()),
- librdf_free_query_results);
+ safe_librdf_free_query_results);
if (!pResults || !librdf_query_results_is_boolean(pResults.get())) {
throw rdf::QueryException(::rtl::OUString::createFromAscii(
"librdf_Repository::queryAsk: "
@@ -1434,12 +1440,12 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
"librdf_Repository::setStatementRDFa: "
"ensureMetadataReference did not"), *this);
}
+ ::rtl::OUString const sXmlId(mdref.First +
+ ::rtl::OUString::createFromAscii("#") + mdref.Second);
uno::Reference<rdf::XURI> xXmlId;
try {
xXmlId.set( rdf::URI::create(m_xContext,
- ::rtl::OUString::createFromAscii(s_nsOOo)
- + mdref.First + ::rtl::OUString::createFromAscii("#")
- + mdref.Second),
+ ::rtl::OUString::createFromAscii(s_nsOOo) + sXmlId),
uno::UNO_QUERY_THROW);
} catch (lang::IllegalArgumentException & iae) {
throw lang::WrappedTargetRuntimeException(
@@ -1449,15 +1455,18 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
}
::osl::MutexGuard g(m_aMutex);
- uno::Reference<rdf::XNode> xText;
+ ::rtl::OUString const content( (i_rRDFaContent.getLength() == 0)
+ ? xTextRange->getString()
+ : i_rRDFaContent );
+ uno::Reference<rdf::XNode> xContent;
try {
- if (i_xRDFaDatatype.is() && (i_rRDFaContent.equalsAscii(""))) {
- xText.set( rdf::Literal::createWithType(m_xContext,
- xTextRange->getString(), i_xRDFaDatatype),
+ if (i_xRDFaDatatype.is()) {
+ xContent.set(rdf::Literal::createWithType(m_xContext,
+ content, i_xRDFaDatatype),
uno::UNO_QUERY_THROW);
} else {
- xText.set( rdf::Literal::create(m_xContext,
- xTextRange->getString()), uno::UNO_QUERY_THROW);
+ xContent.set(rdf::Literal::create(m_xContext, content),
+ uno::UNO_QUERY_THROW);
}
} catch (lang::IllegalArgumentException & iae) {
throw lang::WrappedTargetRuntimeException(
@@ -1465,36 +1474,16 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
"librdf_Repository::setStatementRDFa: "
"cannot create literal"), *this, uno::makeAny(iae));
}
- if (i_rRDFaContent.equalsAscii("")) {
- removeStatementRDFa(i_xObject);
- ::std::for_each(::comphelper::stl_begin(i_rPredicates),
- ::comphelper::stl_end(i_rPredicates),
- ::boost::bind( &librdf_Repository::addStatementGraph,
- this, i_xSubject, _1, xText, xXmlId, true));
+ removeStatementRDFa(i_xObject);
+ if (i_rRDFaContent.getLength() == 0) {
+ m_RDFaXHTMLContentSet.erase(sXmlId);
} else {
- uno::Reference<rdf::XURI> xLabel( m_TypeConverter.getRDFsLabel() );
- uno::Reference<rdf::XNode> xContent;
- try {
- if (!i_xRDFaDatatype.is()) {
- xContent.set(rdf::Literal::create(m_xContext, i_rRDFaContent),
- uno::UNO_QUERY_THROW);
- } else {
- xContent.set(rdf::Literal::createWithType(m_xContext,
- i_rRDFaContent, i_xRDFaDatatype), uno::UNO_QUERY_THROW);
- }
- } catch (lang::IllegalArgumentException & iae) {
- throw lang::WrappedTargetRuntimeException(
- ::rtl::OUString::createFromAscii(
- "librdf_Repository::setStatementRDFa: "
- "cannot create literal"), *this, uno::makeAny(iae));
- }
- removeStatementRDFa(i_xObject);
- ::std::for_each(::comphelper::stl_begin(i_rPredicates),
- ::comphelper::stl_end(i_rPredicates),
- ::boost::bind( &librdf_Repository::addStatementGraph,
- this, i_xSubject, _1, xContent, xXmlId, true));
- addStatementGraph(i_xSubject, xLabel, xText, xXmlId, true);
+ m_RDFaXHTMLContentSet.insert(sXmlId);
}
+ ::std::for_each(::comphelper::stl_begin(i_rPredicates),
+ ::comphelper::stl_end(i_rPredicates),
+ ::boost::bind( &librdf_Repository::addStatementGraph,
+ this, i_xSubject, _1, xContent, xXmlId, true));
}
void SAL_CALL librdf_Repository::removeStatementRDFa(
@@ -1529,7 +1518,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
clearGraph(xXmlId, true);
}
-uno::Sequence<rdf::Statement> SAL_CALL
+beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > SAL_CALL
librdf_Repository::getStatementRDFa(
const uno::Reference< rdf::XMetadatable > & i_xElement)
throw (uno::RuntimeException, lang::IllegalArgumentException,
@@ -1541,14 +1530,14 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
}
const beans::StringPair mdref( i_xElement->getMetadataReference() );
if (mdref.First.equalsAscii("") || mdref.Second.equalsAscii("")) {
- return uno::Sequence<rdf::Statement>();
+ return beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool >();
}
+ ::rtl::OUString const sXmlId(mdref.First +
+ ::rtl::OUString::createFromAscii("#") + mdref.Second);
uno::Reference<rdf::XURI> xXmlId;
try {
xXmlId.set( rdf::URI::create(m_xContext,
- ::rtl::OUString::createFromAscii(s_nsOOo)
- + mdref.First + ::rtl::OUString::createFromAscii("#")
- + mdref.Second),
+ ::rtl::OUString::createFromAscii(s_nsOOo) + sXmlId),
uno::UNO_QUERY_THROW);
} catch (lang::IllegalArgumentException & iae) {
throw lang::WrappedTargetRuntimeException(
@@ -1563,21 +1552,16 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
getStatementsGraph(0, 0, 0, xXmlId, true) );
OSL_ENSURE(xIter.is(), "getStatementRDFa: no result?");
if (!xIter.is()) throw uno::RuntimeException();
- const uno::Reference<rdf::XURI> xLabel( m_TypeConverter.getRDFsLabel() );
while (xIter->hasMoreElements()) {
rdf::Statement stmt;
if (!(xIter->nextElement() >>= stmt)) {
OSL_ENSURE(false, "getStatementRDFa: result of wrong type?");
} else {
- OSL_ENSURE(stmt.Predicate.is(), "getStatementRDFa: no predicate?");
- if (stmt.Predicate->getStringValue() != xLabel->getStringValue()) {
- ret.push_back(stmt);
- } else { // the RDFs:label comes first
- ret.insert(ret.begin(), stmt);
- }
+ ret.push_back(stmt);
}
}
- return ret.getAsConstList();
+ return beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool >(
+ ret.getAsConstList(), 0 != m_RDFaXHTMLContentSet.count(sXmlId));
}
extern "C"
@@ -1608,19 +1592,20 @@ throw (uno::RuntimeException, rdf::RepositoryException)
isMetadatableWithoutMetadata(i_xObject))
{
return new librdf_GraphResult(this, m_aMutex,
- ::boost::shared_ptr<librdf_stream>());
+ ::boost::shared_ptr<librdf_stream>(),
+ ::boost::shared_ptr<librdf_node>());
}
::osl::MutexGuard g(m_aMutex);
const boost::shared_ptr<librdf_statement> pStatement(
m_TypeConverter.mkStatement(m_pWorld.get(),
i_xSubject, i_xPredicate, i_xObject),
- librdf_free_statement);
+ safe_librdf_free_statement);
OSL_ENSURE(pStatement, "mkStatement failed");
const boost::shared_ptr<librdf_stream> pStream(
librdf_model_find_statements(m_pModel.get(), pStatement.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::RepositoryException(::rtl::OUString::createFromAscii(
"librdf_Repository::getStatementsRDFa: "
@@ -1634,7 +1619,8 @@ throw (uno::RuntimeException, rdf::RepositoryException)
"librdf_stream_add_map failed"), *this);
}
- return new librdf_GraphResult(this, m_aMutex, pStream);
+ return new librdf_GraphResult(this, m_aMutex, pStream,
+ ::boost::shared_ptr<librdf_node>());
}
// ::com::sun::star::lang::XInitialization:
@@ -1646,11 +1632,11 @@ throw (uno::RuntimeException, uno::Exception)
::osl::MutexGuard g(m_aMutex);
-// m_pWorld.reset(m_TypeConverter.createWorld(), librdf_free_world);
+// m_pWorld.reset(m_TypeConverter.createWorld(), safe_librdf_free_world);
m_pStorage.reset(m_TypeConverter.createStorage(m_pWorld.get()),
- librdf_free_storage);
+ safe_librdf_free_storage);
m_pModel.reset(m_TypeConverter.createModel(
- m_pWorld.get(), m_pStorage.get()), librdf_free_model);
+ m_pWorld.get(), m_pStorage.get()), safe_librdf_free_model);
}
const NamedGraphMap_t::iterator SAL_CALL librdf_Repository::clearGraph(
@@ -1677,7 +1663,7 @@ const NamedGraphMap_t::iterator SAL_CALL librdf_Repository::clearGraph(
const boost::shared_ptr<librdf_node> pContext(
librdf_new_node_from_uri_string(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (context.getStr())),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pContext) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::clearGraph: "
@@ -1728,7 +1714,7 @@ void SAL_CALL librdf_Repository::addStatementGraph(
const boost::shared_ptr<librdf_node> pContext(
librdf_new_node_from_uri_string(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (context.getStr())),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pContext) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::addStatement: "
@@ -1737,8 +1723,21 @@ void SAL_CALL librdf_Repository::addStatementGraph(
const boost::shared_ptr<librdf_statement> pStatement(
m_TypeConverter.mkStatement(m_pWorld.get(),
i_xSubject, i_xPredicate, i_xObject),
- librdf_free_statement);
+ safe_librdf_free_statement);
OSL_ENSURE(pStatement, "mkStatement failed");
+
+ // Test for duplicate statement
+ // librdf_model_add_statement disallows duplicates while
+ // librdf_model_context_add_statement allows duplicates
+ {
+ const boost::shared_ptr<librdf_stream> pStream(
+ librdf_model_find_statements_in_context(m_pModel.get(),
+ pStatement.get(), pContext.get()),
+ safe_librdf_free_stream);
+ if (pStream && !librdf_stream_end(pStream.get()))
+ return;
+ }
+
if (librdf_model_context_add_statement(m_pModel.get(),
pContext.get(), pStatement.get())) {
throw rdf::RepositoryException(::rtl::OUString::createFromAscii(
@@ -1776,7 +1775,7 @@ void SAL_CALL librdf_Repository::removeStatementsGraph(
const boost::shared_ptr<librdf_node> pContext(
librdf_new_node_from_uri_string(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (context.getStr())),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pContext) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::removeStatements: "
@@ -1785,13 +1784,13 @@ void SAL_CALL librdf_Repository::removeStatementsGraph(
const boost::shared_ptr<librdf_statement> pStatement(
m_TypeConverter.mkStatement(m_pWorld.get(),
i_xSubject, i_xPredicate, i_xObject),
- librdf_free_statement);
+ safe_librdf_free_statement);
OSL_ENSURE(pStatement, "mkStatement failed");
const boost::shared_ptr<librdf_stream> pStream(
librdf_model_find_statements_in_context(m_pModel.get(),
pStatement.get(), pContext.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::RepositoryException(::rtl::OUString::createFromAscii(
"librdf_Repository::removeStatements: "
@@ -1835,7 +1834,8 @@ librdf_Repository::getStatementsGraph(
isMetadatableWithoutMetadata(i_xObject))
{
return new librdf_GraphResult(this, m_aMutex,
- ::boost::shared_ptr<librdf_stream>());
+ ::boost::shared_ptr<librdf_stream>(),
+ ::boost::shared_ptr<librdf_node>());
}
::osl::MutexGuard g(m_aMutex);
@@ -1852,7 +1852,7 @@ librdf_Repository::getStatementsGraph(
const boost::shared_ptr<librdf_node> pContext(
librdf_new_node_from_uri_string(m_pWorld.get(),
reinterpret_cast<const unsigned char*> (context.getStr())),
- librdf_free_node);
+ safe_librdf_free_node);
if (!pContext) {
throw uno::RuntimeException(::rtl::OUString::createFromAscii(
"librdf_Repository::getStatements: "
@@ -1861,20 +1861,22 @@ librdf_Repository::getStatementsGraph(
const boost::shared_ptr<librdf_statement> pStatement(
m_TypeConverter.mkStatement(m_pWorld.get(),
i_xSubject, i_xPredicate, i_xObject),
- librdf_free_statement);
+ safe_librdf_free_statement);
OSL_ENSURE(pStatement, "mkStatement failed");
const boost::shared_ptr<librdf_stream> pStream(
librdf_model_find_statements_in_context(m_pModel.get(),
pStatement.get(), pContext.get()),
- librdf_free_stream);
+ safe_librdf_free_stream);
if (!pStream) {
throw rdf::RepositoryException(::rtl::OUString::createFromAscii(
"librdf_Repository::getStatements: "
"librdf_model_find_statements_in_context failed"), *this);
}
- return new librdf_GraphResult(this, m_aMutex, pStream);
+ // librdf_model_find_statements_in_context is buggy and does not put
+ // the context into result statements; pass it to librdf_GraphResult here
+ return new librdf_GraphResult(this, m_aMutex, pStream, pContext);
}
librdf_world *librdf_TypeConverter::createWorld() const
@@ -1926,8 +1928,8 @@ librdf_model *librdf_TypeConverter::createModel(
prtNode(contexts);
std::cout << std::endl;
// librdf_model_set_feature(repository, LIBRDF_FEATURE_CONTEXTS, ...);
- librdf_free_node(contexts);
- librdf_free_uri(ctxt);
+ safe_librdf_free_node(contexts);
+ safe_librdf_free_uri(ctxt);
}
#endif
return pRepository;
@@ -2012,7 +2014,7 @@ librdf_node* librdf_TypeConverter::mkNode( librdf_world* i_pWorld,
NULL, 0);
} else {
const boost::shared_ptr<librdf_uri> pDatatype(
- mkURI(i_pWorld, xType), librdf_free_uri);
+ mkURI(i_pWorld, xType), safe_librdf_free_uri);
ret = librdf_new_node_from_typed_literal(i_pWorld,
reinterpret_cast<const unsigned char*> (val.getStr()),
NULL, pDatatype.get());
@@ -2051,11 +2053,11 @@ librdf_statement* librdf_TypeConverter::mkStatement( librdf_world* i_pWorld,
try {
pObject = mkNode(i_pWorld, i_xObject);
} catch (...) {
- librdf_free_node(pPredicate);
+ safe_librdf_free_node(pPredicate);
throw;
}
} catch (...) {
- librdf_free_node(pSubject);
+ safe_librdf_free_node(pSubject);
throw;
}
// NB: this takes ownership of the nodes! (which is really ugly)
@@ -2180,22 +2182,6 @@ librdf_TypeConverter::convertToXNode(librdf_node* i_pNode) const
}
}
-#if 0
-uno::Reference<rdf::XStatement>
-librdf_TypeConverter::convertToXStatement(librdf_statement* i_pStmt,
- librdf_node* i_pContext) const
-{
- if (!i_pStmt) {
- throw uno::RuntimeException();
- }
- return new librdf_Statement(
- convertToXResource(librdf_statement_get_subject(i_pStmt)),
- convertToXResource(librdf_statement_get_predicate(i_pStmt)),
- convertToXNode(librdf_statement_get_object(i_pStmt)),
- convertToXURI(i_pContext));
-}
-#endif
-
rdf::Statement
librdf_TypeConverter::convertToStatement(librdf_statement* i_pStmt,
librdf_node* i_pContext) const
@@ -2210,26 +2196,6 @@ librdf_TypeConverter::convertToStatement(librdf_statement* i_pStmt,
convertToXURI(i_pContext));
}
-uno::Reference<rdf::XURI> librdf_TypeConverter::getRDFsLabel() const
-{
- static uno::Reference< rdf::XURI> xLabel;
-
- if (!xLabel.is()) {
- try {
- // rdfs:label
- xLabel.set(rdf::URI::createKnown(m_xContext,
- rdf::URIs::RDFS_LABEL),
- uno::UNO_QUERY_THROW);
- } catch (lang::IllegalArgumentException & iae) {
- throw lang::WrappedTargetRuntimeException(
- ::rtl::OUString::createFromAscii(
- "librdf_TypeConverter::getRDFsLabel: "
- "cannot create rdfs:label"), m_rRep, uno::makeAny(iae));
- }
- }
- return xLabel;
-}
-
} // closing anonymous implementation namespace
diff --git a/vbahelper/inc/vbahelper/vbaaccesshelper.hxx b/vbahelper/inc/vbahelper/vbaaccesshelper.hxx
new file mode 100644
index 000000000000..79bb44ce30a4
--- /dev/null
+++ b/vbahelper/inc/vbahelper/vbaaccesshelper.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: vbahelper.hxx,v $
+ * $Revision: 1.5.32.1 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef OOVBAAPI_VBA_ACCESS_HELPER_HXX
+#define OOVBAAPI_VBA_ACCESS_HELPER_HXX
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <basic/basmgr.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
+#define VBAHELPER_DLLIMPLEMENTATION
+#include <vbahelper/vbadllapi.h>
+#include <memory>
+namespace css = ::com::sun::star;
+namespace ooo
+{
+ namespace vba
+ {
+
+ VBAHELPER_DLLPRIVATE inline css::uno::Reference< css::lang::XMultiServiceFactory > getVBAServiceFactory( SfxObjectShell* pShell )
+ {
+ css::uno::Any aUnoVar;
+ if ( !pShell || ! pShell->GetBasicManager()->GetGlobalUNOConstant( "VBAGlobals", aUnoVar ) )
+ throw css::lang::IllegalArgumentException();
+ css::uno::Reference< css::lang::XMultiServiceFactory > xVBAFactory( aUnoVar, css::uno::UNO_QUERY_THROW );
+ return xVBAFactory;
+ }
+
+ VBAHELPER_DLLPUBLIC inline css::uno::Reference< css::uno::XInterface > createVBAUnoAPIServiceWithArgs( SfxObjectShell* pShell, const sal_Char* _pAsciiName, const css::uno::Sequence< css::uno::Any >& aArgs ) throw (css::uno::RuntimeException)
+ {
+ OSL_PRECOND( pShell, "createVBAUnoAPIService: no shell!" );
+ ::rtl::OUString sVarName( ::rtl::OUString::createFromAscii( _pAsciiName ) );
+ css::uno::Reference< css::uno::XInterface > xIf = getVBAServiceFactory( pShell )->createInstanceWithArguments( sVarName, aArgs );
+ return xIf;
+ }
+
+
+ VBAHELPER_DLLPRIVATE inline bool isAlienDoc( SfxObjectShell& rDocShell, const char* pMimeType )
+ {
+ bool bRes( false );
+ const SfxFilter *pFilt = rDocShell.GetMedium()->GetFilter();
+ if ( pFilt && pFilt->IsAlienFormat() )
+ bRes = ( pFilt->GetMimeType().CompareToAscii( pMimeType ) == 0 );
+ return bRes;
+ }
+ VBAHELPER_DLLPUBLIC inline bool isAlienExcelDoc( SfxObjectShell& rDocShell ) { return isAlienDoc( rDocShell, "application/vnd.ms-excel" ); }
+ VBAHELPER_DLLPUBLIC inline bool isAlienWordDoc( SfxObjectShell& rDocShell ) { return isAlienDoc( rDocShell, "application/vnd.ms-word" ); }
+
+ } // openoffice
+} // org
+
+#endif
diff --git a/vbahelper/inc/vbahelper/vbahelper.hxx b/vbahelper/inc/vbahelper/vbahelper.hxx
index 315ddb19b7ca..aa7ff9b292a7 100644
--- a/vbahelper/inc/vbahelper/vbahelper.hxx
+++ b/vbahelper/inc/vbahelper/vbahelper.hxx
@@ -35,17 +35,19 @@
#include <com/sun/star/lang/IllegalArgumentException.hpp>
#include <com/sun/star/awt/XControl.hpp>
#include <com/sun/star/awt/XDevice.hpp>
+#include <basic/basmgr.hxx>
#include <basic/sberrors.hxx>
#include <cppuhelper/implbase1.hxx>
#include <com/sun/star/frame/XModel.hpp>
#include <sfx2/dispatch.hxx>
-//#include <ooo/vba/msforms/XShape.hpp>
+#include <sfx2/objsh.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
#include <vcl/pointr.hxx>
-#define VBAHELPER_DLLIMPLEMENTATION
-#include <vbahelper/vbadllapi.h>
#include <memory>
-namespace css = ::com::sun::star;
+#include "vbaaccesshelper.hxx"
+namespace css = ::com::sun::star;
namespace ooo
{
namespace vba
@@ -62,7 +64,7 @@ namespace ooo
}
VBAHELPER_DLLPUBLIC SfxObjectShell* getSfxObjShell( const css::uno::Reference< css::frame::XModel >& xModel ) throw ( css::uno::RuntimeException);
VBAHELPER_DLLPUBLIC css::uno::Reference< css::uno::XInterface > createVBAUnoAPIService( SfxObjectShell* pShell, const sal_Char* _pAsciiName ) throw (css::uno::RuntimeException);
- VBAHELPER_DLLPUBLIC css::uno::Reference< css::uno::XInterface > createVBAUnoAPIServiceWithArgs( SfxObjectShell* pShell, const sal_Char* _pAsciiName, const css::uno::Sequence< css::uno::Any >& aArgs ) throw (css::uno::RuntimeException);
+
css::uno::Reference< css::frame::XModel > getCurrentDoc( const rtl::OUString& sKey ) throw (css::uno::RuntimeException);
VBAHELPER_DLLPUBLIC css::uno::Reference< css::frame::XModel > getCurrentExcelDoc( const css::uno::Reference< css::uno::XComponentContext >& xContext ) throw (css::uno::RuntimeException);
VBAHELPER_DLLPUBLIC css::uno::Reference< css::frame::XModel > getCurrentWordDoc( const css::uno::Reference< css::uno::XComponentContext >& xContext ) throw (css::uno::RuntimeException);
diff --git a/vbahelper/prj/d.lst b/vbahelper/prj/d.lst
index d7b61d1e5a61..d683e97c8b90 100644
--- a/vbahelper/prj/d.lst
+++ b/vbahelper/prj/d.lst
@@ -8,6 +8,7 @@
mkdir: %_DEST%\inc%_EXT%\basic
..\inc\vbahelper\vbacollectionimpl.hxx %_DEST%\inc%_EXT%\vbahelper\vbacollectionimpl.hxx
..\inc\vbahelper\vbahelper.hxx %_DEST%\inc%_EXT%\vbahelper\vbahelper.hxx
+..\inc\vbahelper\vbaaccesshelper.hxx %_DEST%\inc%_EXT%\vbahelper\vbaaccesshelper.hxx
..\inc\vbahelper\helperdecl.hxx %_DEST%\inc%_EXT%\vbahelper\helperdecl.hxx
..\inc\vbahelper\vbahelperinterface.hxx %_DEST%\inc%_EXT%\vbahelper\vbahelperinterface.hxx
..\inc\vbahelper\vbaapplicationbase.hxx %_DEST%\inc%_EXT%\vbahelper\vbaapplicationbase.hxx
diff --git a/vbahelper/source/msforms/makefile.mk b/vbahelper/source/msforms/makefile.mk
index 9c24c77f8009..7c61e4302b7f 100644
--- a/vbahelper/source/msforms/makefile.mk
+++ b/vbahelper/source/msforms/makefile.mk
@@ -34,6 +34,11 @@ VISIBILITY_HIDDEN=TRUE
# --- Settings -----------------------------------------------------
+.IF "$(ENABLE_VBA)" == "NO"
+dummy:
+ @echo "Nothing to build"
+.ENDIF
+
.INCLUDE : settings.mk
SLOFILES=\
diff --git a/vbahelper/source/msforms/vbacontrol.cxx b/vbahelper/source/msforms/vbacontrol.cxx
index 8cf00748c278..2ff12b145824 100644
--- a/vbahelper/source/msforms/vbacontrol.cxx
+++ b/vbahelper/source/msforms/vbacontrol.cxx
@@ -374,10 +374,6 @@ ScVbaControlFactory::ScVbaControlFactory( const uno::Reference< uno::XComponentC
{
}
-ScVbaControl* ScVbaControlFactory::createControl() throw (uno::RuntimeException)
-{
- return createControl( m_xModel );
-}
ScVbaControl* ScVbaControlFactory::createControl( const uno::Reference< uno::XInterface >& xParent ) throw (uno::RuntimeException)
{
uno::Reference< drawing::XControlShape > xControlShape( m_xControl, uno::UNO_QUERY );
diff --git a/vbahelper/source/msforms/vbacontrol.hxx b/vbahelper/source/msforms/vbacontrol.hxx
index b0db3c476186..1a8ed063548b 100644
--- a/vbahelper/source/msforms/vbacontrol.hxx
+++ b/vbahelper/source/msforms/vbacontrol.hxx
@@ -98,7 +98,6 @@ class ScVbaControlFactory
public:
ScVbaControlFactory( const css::uno::Reference< css::uno::XComponentContext >& xContext,
const css::uno::Reference< css::uno::XInterface >& xControl, const css::uno::Reference< css::frame::XModel >& xModel );
- ScVbaControl* createControl() throw ( css::uno::RuntimeException );
ScVbaControl* createControl( const css::uno::Reference< css::uno::XInterface >& xParent ) throw ( css::uno::RuntimeException );
private:
ScVbaControl* createControl( const css::uno::Reference< css::awt::XControl >&, const css::uno::Reference< css::uno::XInterface >& ) throw ( css::uno::RuntimeException );
diff --git a/vbahelper/source/vbahelper/makefile.mk b/vbahelper/source/vbahelper/makefile.mk
index 88f8f53bd5bf..3284ec5cec9d 100644
--- a/vbahelper/source/vbahelper/makefile.mk
+++ b/vbahelper/source/vbahelper/makefile.mk
@@ -33,6 +33,11 @@ ENABLE_EXCEPTIONS := TRUE
VISIBILITY_HIDDEN=TRUE
# --- Settings -----------------------------------------------------
+.IF "$(ENABLE_VBA)" == "NO"
+dummy:
+ @echo "Nothing to build"
+.ENDIF
+
.INCLUDE : settings.mk
SLOFILES=\
diff --git a/vbahelper/source/vbahelper/vbahelper.cxx b/vbahelper/source/vbahelper/vbahelper.cxx
index a99b3fd47e00..a7921da9a4f7 100644
--- a/vbahelper/source/vbahelper/vbahelper.cxx
+++ b/vbahelper/source/vbahelper/vbahelper.cxx
@@ -98,15 +98,6 @@ namespace ooo
namespace vba
{
-uno::Reference< lang::XMultiServiceFactory > getVBAServiceFactory( SfxObjectShell* pShell )
-{
- uno::Any aUnoVar;
- if ( !pShell || ! pShell->GetBasicManager()->GetGlobalUNOConstant( "VBAGlobals", aUnoVar ) )
- throw lang::IllegalArgumentException();
- uno::Reference< lang::XMultiServiceFactory > xVBAFactory( aUnoVar, uno::UNO_QUERY_THROW );
- return xVBAFactory;
-}
-
css::uno::Reference< css::uno::XInterface > createVBAUnoAPIService( SfxObjectShell* pShell, const sal_Char* _pAsciiName ) throw (css::uno::RuntimeException)
{
OSL_PRECOND( pShell, "createVBAUnoAPIService: no shell!" );
@@ -114,13 +105,6 @@ css::uno::Reference< css::uno::XInterface > createVBAUnoAPIService( SfxObjectShe
return getVBAServiceFactory( pShell )->createInstance( sVarName );
}
-css::uno::Reference< css::uno::XInterface > createVBAUnoAPIServiceWithArgs( SfxObjectShell* pShell, const sal_Char* _pAsciiName, const uno::Sequence< uno::Any >& aArgs ) throw ( css::uno::RuntimeException )
-{
- OSL_PRECOND( pShell, "createVBAUnoAPIService: no shell!" );
- ::rtl::OUString sVarName( ::rtl::OUString::createFromAscii( _pAsciiName ) );
- uno::Reference< uno::XInterface > xIf = getVBAServiceFactory( pShell )->createInstanceWithArguments( sVarName, aArgs );
- return xIf;
-}
// helper method to determine if the view ( calc ) is in print-preview mode
bool isInPrintPreview( SfxViewFrame* pView )
{
diff --git a/vbahelper/util/makefile.mk b/vbahelper/util/makefile.mk
index 98adae420ed9..49bc8e7d39b0 100644
--- a/vbahelper/util/makefile.mk
+++ b/vbahelper/util/makefile.mk
@@ -34,6 +34,10 @@ TARGET=vbahelper
.INCLUDE : settings.mk
+.IF "$(ENABLE_VBA)" == "NO"
+dummy:
+ @echo "Nothing to build"
+.ENDIF
TARGET_HELPER=vbahelper
diff --git a/vcl/aqua/inc/salframe.h b/vcl/aqua/inc/salframe.h
index fd783270875e..c2ded3267f45 100644
--- a/vcl/aqua/inc/salframe.h
+++ b/vcl/aqua/inc/salframe.h
@@ -184,6 +184,8 @@ public:
NSView* getView() const { return mpView; }
unsigned int getStyleMask() const { return mnStyleMask; }
+ void getResolution( long& o_rDPIX, long& o_rDPIY );
+
// actually the follwing methods do the same thing: flipping y coordinates
// but having two of them makes clearer what the coordinate system
// is supposed to be before and after
diff --git a/vcl/aqua/inc/salinst.h b/vcl/aqua/inc/salinst.h
index 8a44f7ef3304..0bceb99d1d0e 100644
--- a/vcl/aqua/inc/salinst.h
+++ b/vcl/aqua/inc/salinst.h
@@ -32,6 +32,7 @@
#include "vos/mutex.hxx"
#include "vos/thread.hxx"
#include "vcl/salinst.hxx"
+#include "osl/conditn.h"
#include "aquavcltypes.h"
@@ -96,6 +97,7 @@ public:
int mnActivePrintJobs;
std::list< SalUserEvent > maUserEvents;
oslMutex maUserEventListMutex;
+ oslCondition maWaitingYieldCond;
typedef std::list<const ApplicationEvent*> AppEventList;
static AppEventList aAppEventList;
diff --git a/vcl/aqua/source/a11y/aqua11yfactory.mm b/vcl/aqua/source/a11y/aqua11yfactory.mm
index eb745ea24aa5..7732ce202cd2 100644
--- a/vcl/aqua/source/a11y/aqua11yfactory.mm
+++ b/vcl/aqua/source/a11y/aqua11yfactory.mm
@@ -48,6 +48,7 @@
#include "aqua11ywrappersplitter.h"
#include "aqua11ywrappertabgroup.h"
#include "aqua11ywrappertoolbar.h"
+#include "aqua11ytablewrapper.h"
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
using namespace ::com::sun::star::accessibility;
@@ -142,6 +143,8 @@ static bool enabled = false;
aWrapper = [ [ AquaA11yWrapperList alloc ] initWithAccessibleContext: rxAccessibleContext ];
} else if ( [ nativeRole isEqualToString: NSAccessibilitySplitterRole ] ) {
aWrapper = [ [ AquaA11yWrapperSplitter alloc ] initWithAccessibleContext: rxAccessibleContext ];
+ } else if ( [ nativeRole isEqualToString: NSAccessibilityTableRole ] ) {
+ aWrapper = [ [ AquaA11yTableWrapper alloc ] initWithAccessibleContext: rxAccessibleContext ];
} else {
aWrapper = [ [ AquaA11yWrapper alloc ] initWithAccessibleContext: rxAccessibleContext ];
}
diff --git a/vcl/aqua/source/a11y/aqua11ytablewrapper.h b/vcl/aqua/source/a11y/aqua11ytablewrapper.h
index 8753365377e3..7bf3e44a2945 100644
--- a/vcl/aqua/source/a11y/aqua11ytablewrapper.h
+++ b/vcl/aqua/source/a11y/aqua11ytablewrapper.h
@@ -30,9 +30,15 @@
#include "aqua11ywrapper.h"
-@interface AquaA11yTableWrapper : NSObject
+#define MAXIMUM_ACCESSIBLE_TABLE_CELLS 1000
+
+@interface AquaA11yTableWrapper : AquaA11yWrapper
{
}
-+(id)childrenAttributeForElement:(AquaA11yWrapper *)wrapper;
++(id)childrenAttributeForElement:(AquaA11yTableWrapper *)wrapper;
++(void)addAttributeNamesTo: (NSMutableArray *)attributeNames object: (AquaA11yWrapper*)pObject;
+
+-(id)rowsAttribute;
+-(id)columnsAttribute;
@end
#endif // _SV_AQUA11TABLEWRAPPER_H
diff --git a/vcl/aqua/source/a11y/aqua11ytablewrapper.mm b/vcl/aqua/source/a11y/aqua11ytablewrapper.mm
index 08205ac8a66b..98454ab8d57b 100644
--- a/vcl/aqua/source/a11y/aqua11ytablewrapper.mm
+++ b/vcl/aqua/source/a11y/aqua11ytablewrapper.mm
@@ -35,38 +35,120 @@ using namespace ::com::sun::star::accessibility;
using namespace ::com::sun::star::awt;
using namespace ::com::sun::star::uno;
-@implementation AquaA11yTableWrapper : NSObject
+@implementation AquaA11yTableWrapper : AquaA11yWrapper
-+(id)childrenAttributeForElement:(AquaA11yWrapper *)wrapper
++(id)childrenAttributeForElement:(AquaA11yTableWrapper *)wrapper
{
- try
+ XAccessibleTable * accessibleTable = [ wrapper accessibleTable ];
+ NSArray* pResult = nil;
+ if( accessibleTable )
{
NSMutableArray * cells = [ [ NSMutableArray alloc ] init ];
- XAccessibleComponent * accessibleComponent = [ wrapper accessibleComponent ];
- XAccessibleTable * accessibleTable = [ wrapper accessibleTable ];
- // find out which cells are actually visible by determining the top-left-cell and the bottom-right-cell
- Size tableSize = accessibleComponent -> getSize();
- Point point;
- point.X = 0;
- point.Y = 0;
- Reference < XAccessible > rAccessibleTopLeft = accessibleComponent -> getAccessibleAtPoint ( point );
- point.X = tableSize.Width - 1;
- point.Y = tableSize.Height - 1;
- Reference < XAccessible > rAccessibleBottomRight = accessibleComponent -> getAccessibleAtPoint ( point );
- if ( rAccessibleTopLeft.is() && rAccessibleBottomRight.is() )
+ try
{
- sal_Int32 idxTopLeft = rAccessibleTopLeft -> getAccessibleContext() -> getAccessibleIndexInParent();
- sal_Int32 idxBottomRight = rAccessibleBottomRight -> getAccessibleContext() -> getAccessibleIndexInParent();
- sal_Int32 rowTopLeft = accessibleTable -> getAccessibleRow ( idxTopLeft );
- sal_Int32 columnTopLeft = accessibleTable -> getAccessibleColumn ( idxTopLeft );
- sal_Int32 rowBottomRight = accessibleTable -> getAccessibleRow ( idxBottomRight );
- sal_Int32 columnBottomRight = accessibleTable -> getAccessibleColumn ( idxBottomRight );
- // create an array containing the visible cells
- for ( sal_Int32 rowCount = rowTopLeft; rowCount <= rowBottomRight; rowCount++ )
+ sal_Int32 nRows = accessibleTable->getAccessibleRowCount();
+ sal_Int32 nCols = accessibleTable->getAccessibleColumnCount();
+
+ if( nRows * nCols < MAXIMUM_ACCESSIBLE_TABLE_CELLS )
{
- for ( sal_Int32 columnCount = columnTopLeft; columnCount <= columnBottomRight; columnCount++ )
+ // make all children visible to the hierarchy
+ for ( sal_Int32 rowCount = 0; rowCount < nRows; rowCount++ )
{
- Reference < XAccessible > rAccessibleCell = accessibleTable -> getAccessibleCellAt ( rowCount, columnCount );
+ for ( sal_Int32 columnCount = 0; columnCount < nCols; columnCount++ )
+ {
+ Reference < XAccessible > rAccessibleCell = accessibleTable -> getAccessibleCellAt ( rowCount, columnCount );
+ if ( rAccessibleCell.is() )
+ {
+ id cell_wrapper = [ AquaA11yFactory wrapperForAccessibleContext: rAccessibleCell -> getAccessibleContext() ];
+ [ cells addObject: cell_wrapper ];
+ [ cell_wrapper release ];
+ }
+ }
+ }
+ }
+ else
+ {
+ XAccessibleComponent * accessibleComponent = [ wrapper accessibleComponent ];
+ // find out which cells are actually visible by determining the top-left-cell and the bottom-right-cell
+ Size tableSize = accessibleComponent -> getSize();
+ Point point;
+ point.X = 0;
+ point.Y = 0;
+ Reference < XAccessible > rAccessibleTopLeft = accessibleComponent -> getAccessibleAtPoint ( point );
+ point.X = tableSize.Width - 1;
+ point.Y = tableSize.Height - 1;
+ Reference < XAccessible > rAccessibleBottomRight = accessibleComponent -> getAccessibleAtPoint ( point );
+ if ( rAccessibleTopLeft.is() && rAccessibleBottomRight.is() )
+ {
+ sal_Int32 idxTopLeft = rAccessibleTopLeft -> getAccessibleContext() -> getAccessibleIndexInParent();
+ sal_Int32 idxBottomRight = rAccessibleBottomRight -> getAccessibleContext() -> getAccessibleIndexInParent();
+ sal_Int32 rowTopLeft = accessibleTable -> getAccessibleRow ( idxTopLeft );
+ sal_Int32 columnTopLeft = accessibleTable -> getAccessibleColumn ( idxTopLeft );
+ sal_Int32 rowBottomRight = accessibleTable -> getAccessibleRow ( idxBottomRight );
+ sal_Int32 columnBottomRight = accessibleTable -> getAccessibleColumn ( idxBottomRight );
+ // create an array containing the visible cells
+ for ( sal_Int32 rowCount = rowTopLeft; rowCount <= rowBottomRight; rowCount++ )
+ {
+ for ( sal_Int32 columnCount = columnTopLeft; columnCount <= columnBottomRight; columnCount++ )
+ {
+ Reference < XAccessible > rAccessibleCell = accessibleTable -> getAccessibleCellAt ( rowCount, columnCount );
+ if ( rAccessibleCell.is() )
+ {
+ id cell_wrapper = [ AquaA11yFactory wrapperForAccessibleContext: rAccessibleCell -> getAccessibleContext() ];
+ [ cells addObject: cell_wrapper ];
+ [ cell_wrapper release ];
+ }
+ }
+ }
+ }
+ }
+ pResult = NSAccessibilityUnignoredChildren( cells );
+ }
+ catch (const Exception &e)
+ {
+ }
+ [cells autorelease];
+ }
+
+ return pResult;
+}
+
++(void)addAttributeNamesTo: (NSMutableArray *)attributeNames object: (AquaA11yWrapper*)pObject
+{
+ XAccessibleTable * accessibleTable = [ pObject accessibleTable ];
+ if( accessibleTable )
+ {
+ sal_Int32 nRows = accessibleTable->getAccessibleRowCount();
+ sal_Int32 nCols = accessibleTable->getAccessibleColumnCount();
+
+
+ if( nRows*nCols < MAXIMUM_ACCESSIBLE_TABLE_CELLS )
+ {
+ [ attributeNames addObject: NSAccessibilityRowsAttribute ];
+ [ attributeNames addObject: NSAccessibilityColumnsAttribute ];
+ }
+ }
+}
+
+-(id)rowsAttribute
+{
+ NSArray* pResult = nil;
+
+ XAccessibleTable * accessibleTable = [ self accessibleTable ];
+ if( accessibleTable )
+ {
+ sal_Int32 nRows = accessibleTable->getAccessibleRowCount();
+ sal_Int32 nCols = accessibleTable->getAccessibleColumnCount();
+ if( nRows * nCols < MAXIMUM_ACCESSIBLE_TABLE_CELLS )
+ {
+ NSMutableArray * cells = [ [ NSMutableArray alloc ] init ];
+ try
+ {
+ // find out number of rows
+ sal_Int32 nRows = accessibleTable->getAccessibleRowCount();
+ for( sal_Int32 n = 0; n < nRows; n++ )
+ {
+ Reference < XAccessible > rAccessibleCell = accessibleTable -> getAccessibleCellAt ( n, 0 );
if ( rAccessibleCell.is() )
{
id cell_wrapper = [ AquaA11yFactory wrapperForAccessibleContext: rAccessibleCell -> getAccessibleContext() ];
@@ -74,16 +156,56 @@ using namespace ::com::sun::star::uno;
[ cell_wrapper release ];
}
}
+ pResult = NSAccessibilityUnignoredChildren( cells );
+ }
+ catch (const Exception &e)
+ {
+ pResult = nil;
}
+ [ cells autorelease ];
}
- [ cells autorelease ];
- return NSAccessibilityUnignoredChildren( cells );
}
- catch (const Exception &e)
+
+ return pResult;
+}
+
+-(id)columnsAttribute
+{
+ NSArray* pResult = nil;
+
+ XAccessibleTable * accessibleTable = [ self accessibleTable ];
+
+ if( accessibleTable )
{
- // TODO: Log
- return nil;
+ sal_Int32 nRows = accessibleTable->getAccessibleRowCount();
+ sal_Int32 nCols = accessibleTable->getAccessibleColumnCount();
+ if( nRows * nCols < MAXIMUM_ACCESSIBLE_TABLE_CELLS )
+ {
+ NSMutableArray * cells = [ [ NSMutableArray alloc ] init ];
+ try
+ {
+ // find out number of columns
+ for( sal_Int32 n = 0; n < nCols; n++ )
+ {
+ Reference < XAccessible > rAccessibleCell = accessibleTable -> getAccessibleCellAt ( 0, n );
+ if ( rAccessibleCell.is() )
+ {
+ id cell_wrapper = [ AquaA11yFactory wrapperForAccessibleContext: rAccessibleCell -> getAccessibleContext() ];
+ [ cells addObject: cell_wrapper ];
+ [ cell_wrapper release ];
+ }
+ }
+ pResult = NSAccessibilityUnignoredChildren( cells );
+ }
+ catch (const Exception &e)
+ {
+ pResult = nil;
+ }
+ [ cells autorelease ];
+ }
}
+
+ return pResult;
}
@end
diff --git a/vcl/aqua/source/a11y/aqua11ywrapper.mm b/vcl/aqua/source/a11y/aqua11ywrapper.mm
index 959746d533dc..e86676e725f2 100644
--- a/vcl/aqua/source/a11y/aqua11ywrapper.mm
+++ b/vcl/aqua/source/a11y/aqua11ywrapper.mm
@@ -29,6 +29,8 @@
#include "precompiled_vcl.hxx"
#include "salinst.h"
+#include "saldata.hxx"
+
#include "aqua11ywrapper.h"
#include "aqua11yactionwrapper.h"
#include "aqua11ycomponentwrapper.h"
@@ -41,6 +43,7 @@
#include "aqua11yfocuslistener.hxx"
#include "aqua11yfocustracker.hxx"
#include "aqua11yrolehelper.h"
+
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
@@ -217,7 +220,8 @@ static MacOSBOOL isPopupMenuOpen = NO;
-(id)roleAttribute {
if ( mActsAsRadioGroup ) {
return NSAccessibilityRadioGroupRole;
- } else {
+ }
+ else {
return [ AquaA11yRoleHelper getNativeRoleFrom: [ self accessibleContext ] ];
}
}
@@ -323,8 +327,10 @@ static MacOSBOOL isPopupMenuOpen = NO;
}
}
return children;
- } else if ( [ self accessibleTable ] != nil ) {
- return [ AquaA11yTableWrapper childrenAttributeForElement: self ];
+ } else if ( [ self accessibleTable ] != nil )
+ {
+ AquaA11yTableWrapper* pTable = [self isKindOfClass: [AquaA11yTableWrapper class]] ? (AquaA11yTableWrapper*)self : nil;
+ return [ AquaA11yTableWrapper childrenAttributeForElement: pTable ];
} else {
try {
NSMutableArray * children = [ [ NSMutableArray alloc ] init ];
@@ -663,6 +669,7 @@ static MacOSBOOL isPopupMenuOpen = NO;
if ( isPopupMenuOpen ) {
return nil;
}
+
id value = nil;
// if we are no longer in the wrapper repository, we have been disposed
AquaA11yWrapper * theWrapper = [ AquaA11yFactory wrapperForAccessibleContext: [ self accessibleContext ] createIfNotExists: NO ];
@@ -717,6 +724,7 @@ static MacOSBOOL isPopupMenuOpen = NO;
NSString * nativeSubrole = nil;
NSString * title = nil;
NSMutableArray * attributeNames = nil;
+ sal_Int32 nAccessibleChildren = 0;
try {
// Default Attributes
attributeNames = [ NSMutableArray arrayWithObjects:
@@ -737,8 +745,9 @@ static MacOSBOOL isPopupMenuOpen = NO;
}
try
{
- if ( [ self accessibleContext ] -> getAccessibleChildCount() > 0 ) {
- [ attributeNames addObject: NSAccessibilityChildrenAttribute ];
+ nAccessibleChildren = [ self accessibleContext ] -> getAccessibleChildCount();
+ if ( nAccessibleChildren > 0 ) {
+ [ attributeNames addObject: NSAccessibilityChildrenAttribute ];
}
}
catch( DisposedException& ) {}
@@ -754,6 +763,9 @@ static MacOSBOOL isPopupMenuOpen = NO;
[ attributeNames addObject: NSAccessibilityServesAsTitleForUIElementsAttribute ];
}
// Special Attributes depending on interface
+ if( [self accessibleContext ] -> getAccessibleRole() == AccessibleRole::TABLE )
+ [AquaA11yTableWrapper addAttributeNamesTo: attributeNames object: self];
+
if ( [ self accessibleText ] != nil ) {
[ AquaA11yTextWrapper addAttributeNamesTo: attributeNames ];
}
@@ -953,14 +965,15 @@ static MacOSBOOL isPopupMenuOpen = NO;
return hit;
}
-Reference < XAccessibleContext > hitTestRunner ( Point point, Reference < XAccessibleContext > rxAccessibleContext ) {
+Reference < XAccessibleContext > hitTestRunner ( com::sun::star::awt::Point point,
+ Reference < XAccessibleContext > rxAccessibleContext ) {
Reference < XAccessibleContext > hitChild;
Reference < XAccessibleContext > emptyReference;
try {
Reference < XAccessibleComponent > rxAccessibleComponent ( rxAccessibleContext, UNO_QUERY );
if ( rxAccessibleComponent.is() ) {
- Point location = rxAccessibleComponent -> getLocationOnScreen();
- Point hitPoint ( point.X - location.X , point.Y - location.Y);
+ com::sun::star::awt::Point location = rxAccessibleComponent -> getLocationOnScreen();
+ com::sun::star::awt::Point hitPoint ( point.X - location.X , point.Y - location.Y);
Reference < XAccessible > rxAccessible = rxAccessibleComponent -> getAccessibleAtPoint ( hitPoint );
if ( rxAccessible.is() && rxAccessible -> getAccessibleContext().is() ) {
if ( rxAccessible -> getAccessibleContext() -> getAccessibleChildCount() > 0 ) {
@@ -999,7 +1012,7 @@ Reference < XAccessibleContext > hitTestRunner ( Point point, Reference < XAcces
}
Reference < XAccessibleContext > hitChild;
NSRect screenRect = [ [ NSScreen mainScreen ] frame ];
- Point hitPoint ( static_cast<long>(point.x) , static_cast<long>(screenRect.size.height - point.y) );
+ com::sun::star::awt::Point hitPoint ( static_cast<long>(point.x) , static_cast<long>(screenRect.size.height - point.y) );
// check child windows first
NSWindow * window = (NSWindow *) [ self accessibilityAttributeValue: NSAccessibilityWindowAttribute ];
NSArray * childWindows = [ window childWindows ];
diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx
index 62c59e78c963..b8a2261ed9db 100644
--- a/vcl/aqua/source/app/salinst.cxx
+++ b/vcl/aqua/source/app/salinst.cxx
@@ -474,6 +474,7 @@ AquaSalInstance::AquaSalInstance()
mbWaitingYield = false;
maUserEventListMutex = osl_createMutex();
mnActivePrintJobs = 0;
+ maWaitingYieldCond = osl_createCondition();
}
// -----------------------------------------------------------------------
@@ -484,6 +485,7 @@ AquaSalInstance::~AquaSalInstance()
mpSalYieldMutex->release();
delete mpSalYieldMutex;
osl_destroyMutex( maUserEventListMutex );
+ osl_destroyCondition( maWaitingYieldCond );
}
// -----------------------------------------------------------------------
@@ -713,6 +715,7 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents )
if( aEvent.mpFrame && AquaSalFrame::isAlive( aEvent.mpFrame ) )
{
aEvent.mpFrame->CallCallback( aEvent.mnType, aEvent.mpData );
+ osl_setCondition( maWaitingYieldCond );
// return if only one event is asked for
if( ! bHandleAllCurrentEvents )
return;
@@ -785,6 +788,18 @@ void AquaSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents )
(*it)->maInvalidRect.SetEmpty();
}
}
+ osl_setCondition( maWaitingYieldCond );
+ }
+ else if( bWait )
+ {
+ // #i103162#
+ // wait until any thread (most likely the main thread)
+ // has dispatched an event, cop out at 200 ms
+ osl_resetCondition( maWaitingYieldCond );
+ TimeValue aVal = { 0, 200000000 };
+ ULONG nCount = ReleaseYieldMutex();
+ osl_waitCondition( maWaitingYieldCond, &aVal );
+ AcquireYieldMutex( nCount );
}
// we get some apple events way too early
diff --git a/vcl/aqua/source/gdi/salgdi.cxx b/vcl/aqua/source/gdi/salgdi.cxx
index 38fb068bb353..1ef370f43a92 100644
--- a/vcl/aqua/source/gdi/salgdi.cxx
+++ b/vcl/aqua/source/gdi/salgdi.cxx
@@ -694,6 +694,13 @@ void AquaSalGraphics::drawPixel( long nX, long nY, SalColor nSalColor )
void AquaSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 )
{
+ if( nX1 == nX2 && nY1 == nY2 )
+ {
+ // #i109453# platform independent code expects at least one pixel to be drawn
+ drawPixel( nX1, nY1 );
+ return;
+ }
+
if( !CheckContext() )
return;
diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx
index 71c84ee0c2f1..0fd028864bf4 100644
--- a/vcl/aqua/source/window/salframe.cxx
+++ b/vcl/aqua/source/window/salframe.cxx
@@ -1128,6 +1128,16 @@ static Font getFont( NSFont* pFont, long nDPIY, const Font& rDefault )
return aResult;
}
+void AquaSalFrame::getResolution( long& o_rDPIX, long& o_rDPIY )
+{
+ if( ! mpGraphics )
+ {
+ GetGraphics();
+ ReleaseGraphics( mpGraphics );
+ }
+ mpGraphics->GetResolution( o_rDPIX, o_rDPIY );
+}
+
// on OSX-Aqua the style settings are independent of the frame, so it does
// not really belong here. Since the connection to the Appearance_Manager
// is currently done in salnativewidgets.cxx this would be a good place.
@@ -1157,13 +1167,8 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings )
// get the system font settings
Font aAppFont = aStyleSettings.GetAppFont();
- if( ! mpGraphics )
- {
- GetGraphics();
- ReleaseGraphics( mpGraphics );
- }
long nDPIX = 72, nDPIY = 72;
- mpGraphics->GetResolution( nDPIX, nDPIY );
+ getResolution( nDPIX, nDPIY );
aAppFont = getFont( [NSFont systemFontOfSize: 0], nDPIY, aAppFont );
// TODO: better mapping of aqua<->ooo font settings
diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm
index 67926a38608d..0dfa0fa356aa 100755
--- a/vcl/aqua/source/window/salframeview.mm
+++ b/vcl/aqua/source/window/salframeview.mm
@@ -37,7 +37,9 @@
#include "vcl/window.hxx"
#include "vcl/svapp.hxx"
-
+
+#define WHEEL_EVENT_FACTOR 1.5
+
static USHORT ImplGetModifierMask( unsigned int nMask )
{
USHORT nRet = 0;
@@ -654,11 +656,12 @@ private:
mpFrame->CocoaToVCL( aPt );
SalWheelMouseEvent aEvent;
- aEvent.mnTime = mpFrame->mnLastEventTime;
- aEvent.mnX = static_cast<long>(aPt.x) - mpFrame->maGeometry.nX;
- aEvent.mnY = static_cast<long>(aPt.y) - mpFrame->maGeometry.nY;
- aEvent.mnCode = ImplGetModifierMask( mpFrame->mnLastModifierFlags );
- aEvent.mnCode |= KEY_MOD1; // we want zooming, no scrolling
+ aEvent.mnTime = mpFrame->mnLastEventTime;
+ aEvent.mnX = static_cast<long>(aPt.x) - mpFrame->maGeometry.nX;
+ aEvent.mnY = static_cast<long>(aPt.y) - mpFrame->maGeometry.nY;
+ aEvent.mnCode = ImplGetModifierMask( mpFrame->mnLastModifierFlags );
+ aEvent.mnCode |= KEY_MOD1; // we want zooming, no scrolling
+ aEvent.mbDeltaIsPixel = TRUE;
// --- RTL --- (mirror mouse pos)
if( Application::GetSettings().GetLayoutRTL() )
@@ -667,11 +670,11 @@ private:
if( dZ != 0.0 )
{
aEvent.mnDelta = static_cast<long>(floor(dZ));
- aEvent.mnNotchDelta = aEvent.mnDelta / 8;
- if( aEvent.mnNotchDelta == 0 )
- aEvent.mnNotchDelta = dZ < 0.0 ? -1 : 1;
+ aEvent.mnNotchDelta = dZ < 0 ? -1 : 1;
+ if( aEvent.mnDelta == 0 )
+ aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = FALSE;
- aEvent.mnScrollLines = aEvent.mnNotchDelta > 0 ? aEvent.mnNotchDelta : -aEvent.mnNotchDelta;
+ aEvent.mnScrollLines = dZ > 0 ? dZ/WHEEL_EVENT_FACTOR : -dZ/WHEEL_EVENT_FACTOR;
if( aEvent.mnScrollLines == 0 )
aEvent.mnScrollLines = 1;
mpFrame->CallCallback( SALEVENT_WHEELMOUSE, &aEvent );
@@ -712,10 +715,11 @@ private:
mpFrame->CocoaToVCL( aPt );
SalWheelMouseEvent aEvent;
- aEvent.mnTime = mpFrame->mnLastEventTime;
- aEvent.mnX = static_cast<long>(aPt.x) - mpFrame->maGeometry.nX;
- aEvent.mnY = static_cast<long>(aPt.y) - mpFrame->maGeometry.nY;
- aEvent.mnCode = ImplGetModifierMask( mpFrame->mnLastModifierFlags );
+ aEvent.mnTime = mpFrame->mnLastEventTime;
+ aEvent.mnX = static_cast<long>(aPt.x) - mpFrame->maGeometry.nX;
+ aEvent.mnY = static_cast<long>(aPt.y) - mpFrame->maGeometry.nY;
+ aEvent.mnCode = ImplGetModifierMask( mpFrame->mnLastModifierFlags );
+ aEvent.mbDeltaIsPixel = TRUE;
// --- RTL --- (mirror mouse pos)
if( Application::GetSettings().GetLayoutRTL() )
@@ -724,9 +728,9 @@ private:
if( dX != 0.0 )
{
aEvent.mnDelta = static_cast<long>(floor(dX));
- aEvent.mnNotchDelta = aEvent.mnDelta / 8;
- if( aEvent.mnNotchDelta == 0 )
- aEvent.mnNotchDelta = dX < 0.0 ? -1 : 1;
+ aEvent.mnNotchDelta = dX < 0 ? -1 : 1;
+ if( aEvent.mnDelta == 0 )
+ aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = TRUE;
aEvent.mnScrollLines = SAL_WHEELMOUSE_EVENT_PAGESCROLL;
mpFrame->CallCallback( SALEVENT_WHEELMOUSE, &aEvent );
@@ -734,9 +738,9 @@ private:
if( dY != 0.0 && AquaSalFrame::isAlive( mpFrame ))
{
aEvent.mnDelta = static_cast<long>(floor(dY));
- aEvent.mnNotchDelta = aEvent.mnDelta / 8;
- if( aEvent.mnNotchDelta == 0 )
- aEvent.mnNotchDelta = dY < 0.0 ? -1 : 1;
+ aEvent.mnNotchDelta = dY < 0 ? -1 : 1;
+ if( aEvent.mnDelta == 0 )
+ aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = FALSE;
aEvent.mnScrollLines = SAL_WHEELMOUSE_EVENT_PAGESCROLL;
mpFrame->CallCallback( SALEVENT_WHEELMOUSE, &aEvent );
@@ -771,10 +775,11 @@ private:
mpFrame->CocoaToVCL( aPt );
SalWheelMouseEvent aEvent;
- aEvent.mnTime = mpFrame->mnLastEventTime;
- aEvent.mnX = static_cast<long>(aPt.x) - mpFrame->maGeometry.nX;
- aEvent.mnY = static_cast<long>(aPt.y) - mpFrame->maGeometry.nY;
- aEvent.mnCode = ImplGetModifierMask( mpFrame->mnLastModifierFlags );
+ aEvent.mnTime = mpFrame->mnLastEventTime;
+ aEvent.mnX = static_cast<long>(aPt.x) - mpFrame->maGeometry.nX;
+ aEvent.mnY = static_cast<long>(aPt.y) - mpFrame->maGeometry.nY;
+ aEvent.mnCode = ImplGetModifierMask( mpFrame->mnLastModifierFlags );
+ aEvent.mbDeltaIsPixel = TRUE;
// --- RTL --- (mirror mouse pos)
if( Application::GetSettings().GetLayoutRTL() )
@@ -783,30 +788,27 @@ private:
if( dX != 0.0 )
{
aEvent.mnDelta = static_cast<long>(floor(dX));
- aEvent.mnNotchDelta = aEvent.mnDelta / 8;
- if( aEvent.mnNotchDelta == 0 )
- aEvent.mnNotchDelta = dX < 0.0 ? -1 : 1;
+ aEvent.mnNotchDelta = dX < 0 ? -1 : 1;
+ if( aEvent.mnDelta == 0 )
+ aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = TRUE;
- aEvent.mnScrollLines = aEvent.mnNotchDelta > 0 ? aEvent.mnNotchDelta : -aEvent.mnNotchDelta;
+ aEvent.mnScrollLines = dY > 0 ? dX/WHEEL_EVENT_FACTOR : -dX/WHEEL_EVENT_FACTOR;
if( aEvent.mnScrollLines == 0 )
aEvent.mnScrollLines = 1;
- if( aEvent.mnScrollLines > 15 )
- aEvent.mnScrollLines = SAL_WHEELMOUSE_EVENT_PAGESCROLL;
+
mpFrame->CallCallback( SALEVENT_WHEELMOUSE, &aEvent );
}
if( dY != 0.0 && AquaSalFrame::isAlive( mpFrame ) )
{
aEvent.mnDelta = static_cast<long>(floor(dY));
- aEvent.mnNotchDelta = aEvent.mnDelta / 8;
- if( aEvent.mnNotchDelta == 0 )
- aEvent.mnNotchDelta = dY < 0.0 ? -1 : 1;
+ aEvent.mnNotchDelta = dY < 0 ? -1 : 1;
+ if( aEvent.mnDelta == 0 )
+ aEvent.mnDelta = aEvent.mnNotchDelta;
aEvent.mbHorz = FALSE;
- aEvent.mnScrollLines = aEvent.mnNotchDelta > 0 ? aEvent.mnNotchDelta : -aEvent.mnNotchDelta;
- if( aEvent.mnScrollLines == 0 )
+ aEvent.mnScrollLines = dY > 0 ? dY/WHEEL_EVENT_FACTOR : -dY/WHEEL_EVENT_FACTOR;
+ if( aEvent.mnScrollLines < 1 )
aEvent.mnScrollLines = 1;
- if( aEvent.mnScrollLines > 15 )
- aEvent.mnScrollLines = SAL_WHEELMOUSE_EVENT_PAGESCROLL;
-
+
mpFrame->CallCallback( SALEVENT_WHEELMOUSE, &aEvent );
}
}
diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx
index 317a98026f45..8f4b94bf7b18 100644
--- a/vcl/inc/vcl/button.hxx
+++ b/vcl/inc/vcl/button.hxx
@@ -60,7 +60,7 @@ public:
SAL_DLLPRIVATE USHORT ImplGetTextStyle( XubString& rText, WinBits nWinStyle, ULONG nDrawFlags );
SAL_DLLPRIVATE void ImplDrawAlignedImage( OutputDevice* pDev, Point& rPos, Size& rSize,
BOOL bLayout, ULONG nImageSep, ULONG nDrawFlags,
- USHORT nTextStyle, Rectangle *pSymbolRect=NULL );
+ USHORT nTextStyle, Rectangle *pSymbolRect=NULL, bool bAddImageSep = false );
SAL_DLLPRIVATE void ImplSetFocusRect( const Rectangle &rFocusRect );
SAL_DLLPRIVATE const Rectangle& ImplGetFocusRect() const;
SAL_DLLPRIVATE void ImplSetSymbolAlign( SymbolAlign eAlign );
diff --git a/vcl/inc/vcl/cmdevt.hxx b/vcl/inc/vcl/cmdevt.hxx
index 0faac8472253..7e968b6c7a54 100644
--- a/vcl/inc/vcl/cmdevt.hxx
+++ b/vcl/inc/vcl/cmdevt.hxx
@@ -138,18 +138,20 @@ private:
USHORT mnMode;
USHORT mnCode;
BOOL mbHorz;
+ BOOL mbDeltaIsPixel;
public:
CommandWheelData();
CommandWheelData( long nWheelDelta, long nWheelNotchDelta,
ULONG nScrollLines,
USHORT nWheelMode, USHORT nKeyModifier,
- BOOL mbHorz = FALSE );
+ BOOL bHorz = FALSE, BOOL bDeltaIsPixel = FALSE );
long GetDelta() const { return mnDelta; }
long GetNotchDelta() const { return mnNotchDelta; }
ULONG GetScrollLines() const { return mnLines; }
BOOL IsHorz() const { return mbHorz; }
+ BOOL IsDeltaPixel() const { return mbDeltaIsPixel; }
USHORT GetMode() const { return mnMode; }
@@ -173,12 +175,13 @@ inline CommandWheelData::CommandWheelData()
mnMode = 0;
mnCode = 0;
mbHorz = FALSE;
+ mbDeltaIsPixel = FALSE;
}
inline CommandWheelData::CommandWheelData( long nWheelDelta, long nWheelNotchDelta,
ULONG nScrollLines,
USHORT nWheelMode, USHORT nKeyModifier,
- BOOL bHorz )
+ BOOL bHorz, BOOL bDeltaIsPixel )
{
mnDelta = nWheelDelta;
mnNotchDelta = nWheelNotchDelta;
@@ -186,6 +189,7 @@ inline CommandWheelData::CommandWheelData( long nWheelDelta, long nWheelNotchDel
mnMode = nWheelMode;
mnCode = nKeyModifier;
mbHorz = bHorz;
+ mbDeltaIsPixel = bDeltaIsPixel;
}
// ---------------------
diff --git a/vcl/inc/vcl/glyphcache.hxx b/vcl/inc/vcl/glyphcache.hxx
index fa3e99f2373f..a77c1626dc24 100644
--- a/vcl/inc/vcl/glyphcache.hxx
+++ b/vcl/inc/vcl/glyphcache.hxx
@@ -51,6 +51,7 @@ class RawBitmap;
class CmapResult;
#include <vcl/outfont.hxx>
+#include <vcl/impfont.hxx>
class ServerFontLayout;
#include <vcl/sallayout.hxx>
@@ -258,11 +259,15 @@ class VCL_DLLPUBLIC ImplServerFontEntry : public ImplFontEntry
{
private:
ServerFont* mpServerFont;
+ ImplFontOptions maFontOptions;
+ bool mbGotFontOptions;
+ bool mbValidFontOptions;
public:
ImplServerFontEntry( ImplFontSelectData& );
virtual ~ImplServerFontEntry();
void SetServerFont( ServerFont* p) { mpServerFont = p; }
+ void HandleFontOptions();
};
// =======================================================================
diff --git a/vcl/inc/vcl/outfont.hxx b/vcl/inc/vcl/outfont.hxx
index 995fcd6009ff..4bbf7176ddb2 100644
--- a/vcl/inc/vcl/outfont.hxx
+++ b/vcl/inc/vcl/outfont.hxx
@@ -39,6 +39,8 @@
#include <hash_map>
+#include <com/sun/star/linguistic2/XLinguServiceManager.hpp>
+
class ImplDevFontListData;
class ImplGetDevFontList;
class ImplGetDevSizeList;
@@ -186,6 +188,7 @@ public: // TODO: change to private
class VCL_DLLPUBLIC ImplDevFontList
{
private:
+ friend class WinGlyphFallbackSubstititution;
mutable bool mbMatchData; // true if matching attributes are initialized
bool mbMapNames; // true if MapNames are available
@@ -222,6 +225,9 @@ public:
ImplGetDevFontList* GetDevFontList() const;
ImplGetDevSizeList* GetDevSizeList( const String& rFontName ) const;
+ //used by 2-level font fallback
+ ImplDevFontListData* ImplFindByLocale(com::sun::star::lang::Locale lc) const;
+
protected:
void InitMatchData() const;
bool AreMapNamesAvailable() const { return mbMapNames; }
diff --git a/vcl/inc/vcl/salwtype.hxx b/vcl/inc/vcl/salwtype.hxx
index c67d36ac4ea9..95b3806d648b 100644
--- a/vcl/inc/vcl/salwtype.hxx
+++ b/vcl/inc/vcl/salwtype.hxx
@@ -180,6 +180,11 @@ struct SalWheelMouseEvent
ULONG mnScrollLines; // Aktuelle Anzahl zu scrollende Zeilen
USHORT mnCode; // SV-ModifierCode (KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | MOUSE_LEFT | MOUSE_MIDDLE | MOUSE_RIGHT)
BOOL mbHorz; // Horizontal
+ BOOL mbDeltaIsPixel; // delta value is a pixel value (on mac)
+
+ SalWheelMouseEvent()
+ : mnTime( 0 ), mnX( 0 ), mnY( 0 ), mnDelta( 0 ), mnNotchDelta( 0 ), mnScrollLines( 0 ), mnCode( 0 ), mbHorz( FALSE ), mbDeltaIsPixel( FALSE )
+ {}
};
// MOUSEACTIVATE
diff --git a/vcl/os2/source/window/salframe.cxx b/vcl/os2/source/window/salframe.cxx
index 7ecc27ff9754..f3314c725255 100644
--- a/vcl/os2/source/window/salframe.cxx
+++ b/vcl/os2/source/window/salframe.cxx
@@ -3032,10 +3032,8 @@ static void ImplHandleMoveMsg( HWND hWnd)
// -----------------------------------------------------------------------
-static long ImplHandleSizeMsg( HWND hWnd, MPARAM nMP2 )
+static void ImplHandleSizeMsg( HWND hWnd, MPARAM nMP2 )
{
- long nRet;
-
Os2SalFrame* pFrame = GetWindowPtr( hWnd );
if ( pFrame )
{
@@ -3047,11 +3045,10 @@ static long ImplHandleSizeMsg( HWND hWnd, MPARAM nMP2 )
pFrame->mpGraphics->mnHeight = (int)SHORT2FROMMP(nMP2);
// Status merken
ImplSaveFrameState( pFrame );
- nRet = pFrame->CallCallback( SALEVENT_RESIZE, 0 );
+ pFrame->CallCallback( SALEVENT_RESIZE, 0 );
if ( WinIsWindowVisible( pFrame->mhWndFrame ) && !pFrame->mbInShow )
WinUpdateWindow( pFrame->mhWndClient );
}
- return nRet;
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 5ad3f6787461..980e0f1c5b58 100644..100755
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -188,7 +188,7 @@ ImplMouseData::ImplMouseData()
mnActionDelay = 250;
mnMenuDelay = 150;
mnFollow = MOUSE_FOLLOW_MENU | MOUSE_FOLLOW_DDLIST;
- mnWheelBehavior = MOUSE_WHEEL_FOCUS_ONLY;
+ mnWheelBehavior = MOUSE_WHEEL_ALWAYS;
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index 1f45b5902381..08759f37d7a6 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -367,7 +367,8 @@ USHORT Button::ImplGetTextStyle( XubString& rText, WinBits nWinStyle,
void Button::ImplDrawAlignedImage( OutputDevice* pDev, Point& rPos,
Size& rSize, BOOL bLayout,
ULONG nImageSep, ULONG nDrawFlags,
- USHORT nTextStyle, Rectangle *pSymbolRect )
+ USHORT nTextStyle, Rectangle *pSymbolRect,
+ bool bAddImageSep )
{
XubString aText( GetText() );
BOOL bDrawImage = HasImage() && ! ( ImplGetButtonState() & BUTTON_DRAW_NOIMAGE );
@@ -502,6 +503,13 @@ void Button::ImplDrawAlignedImage( OutputDevice* pDev, Point& rPos,
if ( aTSSize.Height() < aTextSize.Height() )
aTSSize.Height() = aTextSize.Height();
+
+ if( bAddImageSep && bDrawImage )
+ {
+ long nDiff = (aImageSize.Height() - aTextSize.Height()) / 3;
+ if( nDiff > 0 )
+ nImageSep += nDiff;
+ }
}
aMax.Width() = aTSSize.Width() > aImageSize.Width() ? aTSSize.Width() : aImageSize.Width();
@@ -880,7 +888,9 @@ void PushButton::ImplInitSettings( BOOL bFont,
EnableChildTransparentMode( TRUE );
SetParentClipMode( PARENTCLIPMODE_NOCLIP );
SetPaintTransparent( TRUE );
- mpWindowImpl->mbUseNativeFocus = ImplGetSVData()->maNWFData.mbNoFocusRects;
+ mpWindowImpl->mbUseNativeFocus = (GetStyle() & WB_FLATBUTTON)
+ ? false
+ : ImplGetSVData()->maNWFData.mbNoFocusRects;
}
else
{
@@ -1194,8 +1204,10 @@ void PushButton::ImplDrawPushButtonContent( OutputDevice* pDev, ULONG nDrawFlags
ULONG nImageSep = 1 + (pDev->GetTextHeight()-10)/2;
if( nImageSep < 1 )
nImageSep = 1;
+ // FIXME: (GetStyle() & WB_FLATBUTTON) != 0 is preliminary
+ // in the next major this should be replaced by "true"
ImplDrawAlignedImage( pDev, aPos, aSize, bLayout, nImageSep, nDrawFlags,
- nTextStyle, IsSymbol() ? &aSymbolRect : NULL );
+ nTextStyle, IsSymbol() ? &aSymbolRect : NULL, (GetStyle() & WB_FLATBUTTON) != 0 );
if ( IsSymbol() && ! bLayout )
{
@@ -1363,7 +1375,7 @@ void PushButton::ImplDrawPushButton( bool bLayout )
Size aInRectSize( LogicToPixel( Size( aInRect.GetWidth(), aInRect.GetHeight() ) ) );
aPBVal.mbSingleLine = (aInRectSize.Height() < 2 * aFontSize.Height() );
- if( ((nState & CTRL_STATE_ROLLOVER) || HasFocus()) || ! (GetStyle() & WB_FLATBUTTON) )
+ if( ((nState & CTRL_STATE_ROLLOVER)) || ! (GetStyle() & WB_FLATBUTTON) )
{
bNativeOK = DrawNativeControl( CTRL_PUSHBUTTON, PART_ENTIRE_CONTROL, aCtrlRegion, nState,
aControlValue, rtl::OUString()/*PushButton::GetText()*/ );
@@ -1388,7 +1400,7 @@ void PushButton::ImplDrawPushButton( bool bLayout )
if( (GetStyle() & WB_FLATBUTTON) )
{
Rectangle aTempRect( aInRect );
- if( ! bLayout && (bRollOver || HasFocus()) )
+ if( ! bLayout && bRollOver )
ImplDrawPushButtonFrame( this, aTempRect, nButtonStyle );
aInRect.Left() += 2;
aInRect.Top() += 2;
@@ -1879,7 +1891,8 @@ long PushButton::PreNotify( NotifyEvent& rNEvt )
pBorder->Update();
}
}
- else if( IsNativeControlSupported(CTRL_PUSHBUTTON, PART_ENTIRE_CONTROL) )
+ else if( (GetStyle() & WB_FLATBUTTON) ||
+ IsNativeControlSupported(CTRL_PUSHBUTTON, PART_ENTIRE_CONTROL) )
{
Invalidate();
}
diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx
index 741267044829..89fbe6d3db78 100644
--- a/vcl/source/control/tabctrl.cxx
+++ b/vcl/source/control/tabctrl.cxx
@@ -1156,8 +1156,6 @@ void TabControl::MouseButtonDown( const MouseEvent& rMEvt )
ImplTabItem* pItem = ImplGetItem( nPageId );
if( pItem && pItem->mbEnabled )
SelectTabPage( nPageId );
- else
- Sound::Beep( SOUND_ERROR, this );
}
}
}
diff --git a/vcl/source/fontsubset/cff.cxx b/vcl/source/fontsubset/cff.cxx
index 9884e7016fee..620ca64f44d9 100644
--- a/vcl/source/fontsubset/cff.cxx
+++ b/vcl/source/fontsubset/cff.cxx
@@ -33,6 +33,7 @@
#include <assert.h>
#include <vcl/fontsubset.hxx>
+#include <vcl/strhelper.hxx>
//#define IGNORE_HINTS
@@ -2027,6 +2028,17 @@ void Type1Emitter::emitAllCrypted( void)
// --------------------------------------------------------------------
+// #i110387# quick-and-dirty double->ascii conversion
+// needed because sprintf/ecvt/etc. alone are too localized (LC_NUMERIC)
+// also strip off trailing zeros in fraction while we are at it
+inline int dbl2str( char* pOut, double fVal, int nPrecision=6)
+{
+ const int nLen = psp::getValueOfDouble( pOut, fVal, nPrecision);
+ return nLen;
+}
+
+// --------------------------------------------------------------------
+
void Type1Emitter::emitValVector( const char* pLineHead, const char* pLineTail,
const ValVector& rVector)
{
@@ -2042,10 +2054,11 @@ void Type1Emitter::emitValVector( const char* pLineHead, const char* pLineTail,
aVal = *it;
if( ++it == rVector.end() )
break;
- mpPtr += sprintf( mpPtr, "%g ", aVal);
+ mpPtr += dbl2str( mpPtr, aVal);
+ *(mpPtr++) = ' ';
}
// emit the last value
- mpPtr += sprintf( mpPtr, "%g", aVal);
+ mpPtr += dbl2str( mpPtr, aVal);
// emit the line tail
mpPtr += sprintf( mpPtr, pLineTail);
}
@@ -2202,18 +2215,33 @@ bool CffSubsetterContext::emitAsType1( Type1Emitter& rEmitter,
rEmitter.emitValVector( "/FamilyBlues [", "]ND\n", mpCffLocal->maFamilyBlues);
rEmitter.emitValVector( "/FamilyOtherBlues [", "]ND\n", mpCffLocal->maFamilyOtherBlues);
- if( mpCffLocal->mfBlueScale)
- pOut += sprintf( pOut, "/BlueScale %.6f def\n", mpCffLocal->mfBlueScale);
- if( mpCffLocal->mfBlueShift) // default BlueShift==7
- pOut += sprintf( pOut, "/BlueShift %.1f def\n", mpCffLocal->mfBlueShift);
- if( mpCffLocal->mfBlueFuzz) // default BlueFuzz==1
- pOut += sprintf( pOut, "/BlueFuzz %.1f def\n", mpCffLocal->mfBlueFuzz);
+ if( mpCffLocal->mfBlueScale) {
+ pOut += sprintf( pOut, "/BlueScale ");
+ pOut += dbl2str( pOut, mpCffLocal->mfBlueScale, 6);
+ pOut += sprintf( pOut, " def\n");
+ }
+ if( mpCffLocal->mfBlueShift) { // default BlueShift==7
+ pOut += sprintf( pOut, "/BlueShift ");
+ pOut += dbl2str( pOut, mpCffLocal->mfBlueShift);
+ pOut += sprintf( pOut, " def\n");
+ }
+ if( mpCffLocal->mfBlueFuzz) { // default BlueFuzz==1
+ pOut += sprintf( pOut, "/BlueFuzz ");
+ pOut += dbl2str( pOut, mpCffLocal->mfBlueFuzz);
+ pOut += sprintf( pOut, " def\n");
+ }
// emit stem hint related privdict entries
- if( mpCffLocal->maStemStdHW)
- pOut += sprintf( pOut, "/StdHW [%g] def\n", mpCffLocal->maStemStdHW);
- if( mpCffLocal->maStemStdVW)
- pOut += sprintf( pOut, "/StdVW [%g] def\n", mpCffLocal->maStemStdVW);
+ if( mpCffLocal->maStemStdHW) {
+ pOut += sprintf( pOut, "/StdHW [");
+ pOut += dbl2str( pOut, mpCffLocal->maStemStdHW);
+ pOut += sprintf( pOut, "] def\n");
+ }
+ if( mpCffLocal->maStemStdVW) {
+ pOut += sprintf( pOut, "/StdVW [");
+ pOut += dbl2str( pOut, mpCffLocal->maStemStdVW);
+ pOut += sprintf( pOut, "] def\n");
+ }
rEmitter.emitValVector( "/StemSnapH [", "]ND\n", mpCffLocal->maStemSnapH);
rEmitter.emitValVector( "/StemSnapV [", "]ND\n", mpCffLocal->maStemSnapV);
@@ -2224,8 +2252,11 @@ bool CffSubsetterContext::emitAsType1( Type1Emitter& rEmitter,
pOut += sprintf( pOut, "/LanguageGroup %d def\n", mpCffLocal->mnLangGroup);
if( mpCffLocal->mnLangGroup == 1) // compatibility with ancient printers
pOut += sprintf( pOut, "/RndStemUp false def\n");
- if( mpCffLocal->mfExpFactor)
- pOut += sprintf( pOut, "/ExpansionFactor %.2f def\n", mpCffLocal->mfExpFactor);
+ if( mpCffLocal->mfExpFactor) {
+ pOut += sprintf( pOut, "/ExpansionFactor ");
+ pOut += dbl2str( pOut, mpCffLocal->mfExpFactor);
+ pOut += sprintf( pOut, " def\n");
+ }
#endif // IGNORE_HINTS
// emit remaining privdict entries
@@ -2248,6 +2279,7 @@ bool CffSubsetterContext::emitAsType1( Type1Emitter& rEmitter,
// emit used GlobalSubr charstrings
// these are the just the default subrs
+ // TODO: do we need them as the flex hints are resolved differently?
static const char aSubrs[] =
"/Subrs 5 array\n"
"dup 0 15 RD \x5F\x3D\x6B\xAC\x3C\xBD\x74\x3D\x3E\x17\xA0\x86\x58\x08\x85 NP\n"
diff --git a/vcl/source/gdi/bitmap.cxx b/vcl/source/gdi/bitmap.cxx
index 51c76b5a4626..074935086b0b 100644
--- a/vcl/source/gdi/bitmap.cxx
+++ b/vcl/source/gdi/bitmap.cxx
@@ -323,7 +323,23 @@ BOOL Bitmap::HasGreyPalette() const
BOOL bRet = FALSE;
if( 1 == nBitCount )
- bRet = TRUE;
+ {
+ BitmapReadAccess* pRAcc = ( (Bitmap*) this )->AcquireReadAccess();
+
+ if( pRAcc )
+ {
+ const BitmapColor& rCol0( pRAcc->GetPaletteColor( 0 ) );
+ const BitmapColor& rCol1( pRAcc->GetPaletteColor( 1 ) );
+ if( rCol0.GetRed() == rCol0.GetGreen() && rCol0.GetRed() == rCol0.GetBlue() &&
+ rCol1.GetRed() == rCol1.GetGreen() && rCol1.GetRed() == rCol1.GetBlue() )
+ {
+ bRet = TRUE;
+ }
+ ( (Bitmap*) this )->ReleaseAccess( pRAcc );
+ }
+ else
+ bRet = TRUE;
+ }
else if( 4 == nBitCount || 8 == nBitCount )
{
BitmapReadAccess* pRAcc = ( (Bitmap*) this )->AcquireReadAccess();
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 630e58a1f2bf..f4fcba72b0c2 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -1672,6 +1672,18 @@ void ImplDevFontList::InitMatchData() const
}
}
+//----------------------------------------------------------------------------
+ImplDevFontListData* ImplDevFontList::ImplFindByLocale(com::sun::star::lang::Locale lc) const
+{
+ // get the default font for a specified locale
+ const DefaultFontConfiguration& rDefaults = *DefaultFontConfiguration::get();
+ String aDefault = rDefaults.getUserInterfaceFont( lc );
+ ImplDevFontListData* pFontData = ImplFindByTokenNames( aDefault );
+ if( pFontData )
+ return pFontData;
+ return 0;
+}
+
// -----------------------------------------------------------------------
ImplDevFontListData* ImplDevFontList::ImplFindByAttributes( ULONG nSearchType,
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 6a24775219d9..7ee5889ba532 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -11733,7 +11733,7 @@ sal_Int32 PDFWriterImpl::findRadioGroupWidget( const PDFWriter::RadioButtonWidge
m_aWidgets.back().m_nPage = m_nCurrentPage;
m_aWidgets.back().m_eType = PDFWriter::RadioButton;
m_aWidgets.back().m_nRadioGroup = rBtn.RadioGroup;
- m_aWidgets.back().m_nFlags |= 0x00008000;
+ m_aWidgets.back().m_nFlags |= 0x0000C000; // NoToggleToOff and Radio bits
createWidgetFieldName( sal_Int32(m_aWidgets.size()-1), rBtn );
}
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index bf462d1d8add..80ae3a3a8c7f 100755
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -1800,8 +1800,8 @@ void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
int nRunStart, nRunEnd;
while (rArgs.GetNextRun(&nRunStart, &nRunEnd, &bRtl))
{
- if (bRtl) std::fill(vRtl.begin() + nRunStart - rArgs.mnMinCharPos,
- vRtl.begin() + nRunEnd - rArgs.mnMinCharPos, true);
+ if (bRtl) std::fill(vRtl.begin() + ( nRunStart - rArgs.mnMinCharPos ),
+ vRtl.begin() + ( nRunEnd - rArgs.mnMinCharPos ), true);
}
rArgs.ResetPos();
diff --git a/vcl/source/glyphs/glyphcache.cxx b/vcl/source/glyphs/glyphcache.cxx
index ea0f18896b7a..1953ecf553c4 100644
--- a/vcl/source/glyphs/glyphcache.cxx
+++ b/vcl/source/glyphs/glyphcache.cxx
@@ -519,8 +519,10 @@ bool ServerFont::IsGlyphInvisible( int nGlyphIndex )
// =======================================================================
ImplServerFontEntry::ImplServerFontEntry( ImplFontSelectData& rFSD )
-: ImplFontEntry( rFSD ),
- mpServerFont( NULL )
+: ImplFontEntry( rFSD )
+, mpServerFont( NULL )
+, mbGotFontOptions( false )
+, mbValidFontOptions( false )
{}
// -----------------------------------------------------------------------
diff --git a/vcl/source/src/print.src b/vcl/source/src/print.src
index 3158926f5e6d..58f0a477c848 100644
--- a/vcl/source/src/print.src
+++ b/vcl/source/src/print.src
@@ -356,7 +356,7 @@ ModalDialog SV_DLG_PRINT
{
Pos = MAP_APPFONT( 5, 35 );
Size = MAP_APPFONT( 150, 10 );
- Text [en-US] = "Range and Copies";
+ Text [en-US] = "Range and copies";
};
FixedText SV_PRINT_COPYCOUNT
{
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 33e58b51d6d0..35077b1cff0e 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -647,7 +647,7 @@ void PrintDialog::JobTabPage::setupLayout()
// add printer fixed line
maLayout.addWindow( &maPrinterFL );
// add print LB
- maLayout.addWindow( &maPrinters );
+ maLayout.addWindow( &maPrinters, 3 );
// create a row for details button/text and properties button
boost::shared_ptr< vcl::RowOrColumn > xDetRow( new vcl::RowOrColumn( &maLayout, false ) );
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 95ac5940b6d2..7b0512a1320b 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -1474,6 +1474,7 @@ static long ImplHandleWheelEvent( Window* pWindow, const SalWheelMouseEvent& rEv
USHORT nMode;
USHORT nCode = rEvt.mnCode;
bool bHorz = rEvt.mbHorz;
+ bool bPixel = rEvt.mbDeltaIsPixel;
if ( nCode & KEY_MOD1 )
nMode = COMMAND_WHEEL_ZOOM;
else if ( nCode & KEY_MOD2 )
@@ -1486,7 +1487,7 @@ static long ImplHandleWheelEvent( Window* pWindow, const SalWheelMouseEvent& rEv
bHorz = true;
}
- CommandWheelData aWheelData( rEvt.mnDelta, rEvt.mnNotchDelta, rEvt.mnScrollLines, nMode, nCode, bHorz );
+ CommandWheelData aWheelData( rEvt.mnDelta, rEvt.mnNotchDelta, rEvt.mnScrollLines, nMode, nCode, bHorz, bPixel );
Point aMousePos( rEvt.mnX, rEvt.mnY );
BOOL bRet = TRUE;
diff --git a/vcl/unx/gtk/a11y/atkbridge.cxx b/vcl/unx/gtk/a11y/atkbridge.cxx
index 47efde7d3dfd..25add8e0dd18 100644
--- a/vcl/unx/gtk/a11y/atkbridge.cxx
+++ b/vcl/unx/gtk/a11y/atkbridge.cxx
@@ -40,10 +40,7 @@ bool InitAtkBridge(void)
{
const char* pVersion = atk_get_toolkit_version();
if( ! pVersion )
- {
- // g_warning( "unable to get gail version number" );
return false;
- }
unsigned int major, minor, micro;
diff --git a/vcl/unx/gtk/a11y/atktext.cxx b/vcl/unx/gtk/a11y/atktext.cxx
index f346a6a5a02c..e6d3276891de 100644
--- a/vcl/unx/gtk/a11y/atktext.cxx
+++ b/vcl/unx/gtk/a11y/atktext.cxx
@@ -454,6 +454,84 @@ text_wrapper_set_caret_offset (AtkText *text,
return FALSE;
}
+// --> OD 2010-03-04 #i92232#
+AtkAttributeSet*
+handle_text_markup_as_run_attribute( accessibility::XAccessibleTextMarkup* pTextMarkup,
+ const gint nTextMarkupType,
+ const gint offset,
+ AtkAttributeSet* pSet,
+ gint *start_offset,
+ gint *end_offset )
+{
+ const gint nTextMarkupCount( pTextMarkup->getTextMarkupCount( nTextMarkupType ) );
+ if ( nTextMarkupCount > 0 )
+ {
+ for ( gint nTextMarkupIndex = 0;
+ nTextMarkupIndex < nTextMarkupCount;
+ ++nTextMarkupIndex )
+ {
+ accessibility::TextSegment aTextSegment =
+ pTextMarkup->getTextMarkup( nTextMarkupIndex, nTextMarkupType );
+ const gint nStartOffsetTextMarkup = aTextSegment.SegmentStart;
+ const gint nEndOffsetTextMarkup = aTextSegment.SegmentEnd;
+ if ( nStartOffsetTextMarkup <= offset )
+ {
+ if ( offset < nEndOffsetTextMarkup )
+ {
+ // text markup at <offset>
+ *start_offset = ::std::max( *start_offset,
+ nStartOffsetTextMarkup );
+ *end_offset = ::std::min( *end_offset,
+ nEndOffsetTextMarkup );
+ switch ( nTextMarkupType )
+ {
+ case com::sun::star::text::TextMarkupType::SPELLCHECK:
+ {
+ pSet = attribute_set_prepend_misspelled( pSet );
+ }
+ break;
+ case com::sun::star::text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ {
+ pSet = attribute_set_prepend_tracked_change_insertion( pSet );
+ }
+ break;
+ case com::sun::star::text::TextMarkupType::TRACK_CHANGE_DELETION:
+ {
+ pSet = attribute_set_prepend_tracked_change_deletion( pSet );
+ }
+ break;
+ case com::sun::star::text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pSet = attribute_set_prepend_tracked_change_formatchange( pSet );
+ }
+ break;
+ default:
+ {
+ OSL_ASSERT( false );
+ }
+ }
+ break; // no further iteration needed.
+ }
+ else
+ {
+ *start_offset = ::std::max( *start_offset,
+ nEndOffsetTextMarkup );
+ // continue iteration.
+ }
+ }
+ else
+ {
+ *end_offset = ::std::min( *end_offset,
+ nStartOffsetTextMarkup );
+ break; // no further iteration.
+ }
+ } // eof iteration over text markups
+ }
+
+ return pSet;
+}
+// <--
+
static AtkAttributeSet *
text_wrapper_get_run_attributes( AtkText *text,
gint offset,
@@ -491,41 +569,41 @@ text_wrapper_get_run_attributes( AtkText *text,
}
}
- // Special handling for missspelled
+ // Special handling for misspelled text
+ // --> OD 2010-03-01 #i92232#
+ // - add special handling for tracked changes and refactor the
+ // corresponding code for handling misspelled text.
accessibility::XAccessibleTextMarkup* pTextMarkup = getTextMarkup( text );
if( pTextMarkup )
{
- uno::Sequence< accessibility::TextSegment > aTextSegmentSeq =
- pTextMarkup->getTextMarkupAtIndex( offset, com::sun::star::text::TextMarkupType::SPELLCHECK );
- if( aTextSegmentSeq.getLength() > 0 )
+ // Get attribute run here if it hasn't been done before
+ if( !bOffsetsAreValid )
{
- accessibility::TextSegment aTextSegment = aTextSegmentSeq[0];
- gint nStartOffsetMisspelled = aTextSegment.SegmentStart;
- gint nEndOffsetMisspelled = aTextSegment.SegmentEnd;
-
- // Get attribute run here if it hasn't been done before
- if( !bOffsetsAreValid )
- {
- accessibility::TextSegment aAttributeTextSegment =
- pText->getTextAtIndex(offset, accessibility::AccessibleTextType::ATTRIBUTE_RUN);
- *start_offset = aAttributeTextSegment.SegmentStart;
- *end_offset = aAttributeTextSegment.SegmentEnd;
- }
-
- if( nEndOffsetMisspelled <= offset )
- *start_offset = ::std::max( *start_offset, nEndOffsetMisspelled );
- else if( nStartOffsetMisspelled <= offset )
- *start_offset = ::std::max( *start_offset, nStartOffsetMisspelled );
-
- if( nStartOffsetMisspelled > offset )
- *end_offset = ::std::min( *end_offset, nStartOffsetMisspelled );
- else if( nEndOffsetMisspelled > offset )
- *end_offset = ::std::min( *end_offset, nEndOffsetMisspelled );
-
- if( nStartOffsetMisspelled <= offset && nEndOffsetMisspelled > offset )
- pSet = attribute_set_prepend_misspelled( pSet );
+ accessibility::TextSegment aAttributeTextSegment =
+ pText->getTextAtIndex(offset, accessibility::AccessibleTextType::ATTRIBUTE_RUN);
+ *start_offset = aAttributeTextSegment.SegmentStart;
+ *end_offset = aAttributeTextSegment.SegmentEnd;
}
+ // handle misspelled text
+ pSet = handle_text_markup_as_run_attribute(
+ pTextMarkup,
+ com::sun::star::text::TextMarkupType::SPELLCHECK,
+ offset, pSet, start_offset, end_offset );
+ // handle tracked changes
+ pSet = handle_text_markup_as_run_attribute(
+ pTextMarkup,
+ com::sun::star::text::TextMarkupType::TRACK_CHANGE_INSERTION,
+ offset, pSet, start_offset, end_offset );
+ pSet = handle_text_markup_as_run_attribute(
+ pTextMarkup,
+ com::sun::star::text::TextMarkupType::TRACK_CHANGE_DELETION,
+ offset, pSet, start_offset, end_offset );
+ pSet = handle_text_markup_as_run_attribute(
+ pTextMarkup,
+ com::sun::star::text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE,
+ offset, pSet, start_offset, end_offset );
}
+ // <--
}
catch(const uno::Exception& e){
diff --git a/vcl/unx/gtk/a11y/atktextattributes.cxx b/vcl/unx/gtk/a11y/atktextattributes.cxx
index 02624a9628cf..04498810597f 100644
--- a/vcl/unx/gtk/a11y/atktextattributes.cxx
+++ b/vcl/unx/gtk/a11y/atktextattributes.cxx
@@ -74,6 +74,12 @@ static AtkTextAttribute atk_text_attribute_tab_stops = ATK_TEXT_ATTR_INVALID;
static AtkTextAttribute atk_text_attribute_writing_mode = ATK_TEXT_ATTR_INVALID;
static AtkTextAttribute atk_text_attribute_vertical_align = ATK_TEXT_ATTR_INVALID;
static AtkTextAttribute atk_text_attribute_misspelled = ATK_TEXT_ATTR_INVALID;
+// --> OD 2010-03-01 #i92232#
+static AtkTextAttribute atk_text_attribute_tracked_change = ATK_TEXT_ATTR_INVALID;
+// <--
+// --> OD 2010-03-05 #i92233#
+static AtkTextAttribute atk_text_attribute_mm_to_pixel_ratio = ATK_TEXT_ATTR_INVALID;
+// <--
/*****************************************************************************/
@@ -103,6 +109,9 @@ enum ExportedAttribute
TEXT_ATTRIBUTE_STRIKETHROUGH,
TEXT_ATTRIBUTE_UNDERLINE,
TEXT_ATTRIBUTE_WEIGHT,
+ // --> OD 2010-03-05 #i92233#
+ TEXT_ATTRIBUTE_MM_TO_PIXEL_RATIO,
+ // <--
TEXT_ATTRIBUTE_JUSTIFICATION,
TEXT_ATTRIBUTE_BOTTOM_MARGIN,
TEXT_ATTRIBUTE_FIRST_LINE_INDENT,
@@ -137,6 +146,9 @@ static const char * ExportedTextAttributes[TEXT_ATTRIBUTE_LAST] =
"CharStrikeout", // TEXT_ATTRIBUTE_STRIKETHROUGH
"CharUnderline", // TEXT_ATTRIBUTE_UNDERLINE
"CharWeight", // TEXT_ATTRIBUTE_WEIGHT
+ // --> OD 2010-03-05 #i92233#
+ "MMToPixelRatio", // TEXT_ATTRIBUTE_MM_TO_PIXEL_RATIO
+ // <--
"ParaAdjust", // TEXT_ATTRIBUTE_JUSTIFICATION
"ParaBottomMargin", // TEXT_ATTRIBUTE_BOTTOM_MARGIN
"ParaFirstLineIndent", // TEXT_ATTRIBUTE_FIRST_LINE_INDENT
@@ -1293,6 +1305,14 @@ attribute_set_new_from_property_values(
attribute_set = attribute_set_prepend(attribute_set, atk_text_attribute_tab_stops,
get_value(rAttributeList, aIndexList[TEXT_ATTRIBUTE_TAB_STOPS], TabStops2String));
+ // --> OD 2010-03-05 #i92233#
+ if( ATK_TEXT_ATTR_INVALID == atk_text_attribute_mm_to_pixel_ratio )
+ atk_text_attribute_mm_to_pixel_ratio = atk_text_attribute_register("mm-to-pixel-ratio");
+
+ attribute_set = attribute_set_prepend( attribute_set, atk_text_attribute_mm_to_pixel_ratio,
+ get_value(rAttributeList, aIndexList[TEXT_ATTRIBUTE_MM_TO_PIXEL_RATIO], Float2String));
+ // <--
+
return attribute_set;
}
@@ -1308,6 +1328,49 @@ AtkAttributeSet* attribute_set_prepend_misspelled( AtkAttributeSet* attribute_se
return attribute_set;
}
+// --> OD 2010-03-01 #i92232#
+AtkAttributeSet* attribute_set_prepend_tracked_change_insertion( AtkAttributeSet* attribute_set )
+{
+ if ( ATK_TEXT_ATTR_INVALID == atk_text_attribute_tracked_change )
+ {
+ atk_text_attribute_tracked_change = atk_text_attribute_register( "text-tracked-change" );
+ }
+
+ attribute_set = attribute_set_prepend( attribute_set,
+ atk_text_attribute_tracked_change,
+ g_strdup_printf( "insertion" ) );
+
+ return attribute_set;
+}
+
+AtkAttributeSet* attribute_set_prepend_tracked_change_deletion( AtkAttributeSet* attribute_set )
+{
+ if ( ATK_TEXT_ATTR_INVALID == atk_text_attribute_tracked_change )
+ {
+ atk_text_attribute_tracked_change = atk_text_attribute_register( "text-tracked-change" );
+ }
+
+ attribute_set = attribute_set_prepend( attribute_set,
+ atk_text_attribute_tracked_change,
+ g_strdup_printf( "deletion" ) );
+
+ return attribute_set;
+}
+
+AtkAttributeSet* attribute_set_prepend_tracked_change_formatchange( AtkAttributeSet* attribute_set )
+{
+ if ( ATK_TEXT_ATTR_INVALID == atk_text_attribute_tracked_change )
+ {
+ atk_text_attribute_tracked_change = atk_text_attribute_register( "text-tracked-change" );
+ }
+
+ attribute_set = attribute_set_prepend( attribute_set,
+ atk_text_attribute_tracked_change,
+ g_strdup_printf( "attribute-change" ) );
+
+ return attribute_set;
+}
+// <--
/*****************************************************************************/
diff --git a/vcl/unx/gtk/a11y/atktextattributes.hxx b/vcl/unx/gtk/a11y/atktextattributes.hxx
index e363460bb578..9c7628bf927e 100644
--- a/vcl/unx/gtk/a11y/atktextattributes.hxx
+++ b/vcl/unx/gtk/a11y/atktextattributes.hxx
@@ -45,5 +45,10 @@ attribute_set_map_to_property_values(
com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rValueList );
AtkAttributeSet* attribute_set_prepend_misspelled( AtkAttributeSet* attribute_set );
+// --> OD 2010-03-01 #i92232#
+AtkAttributeSet* attribute_set_prepend_tracked_change_insertion( AtkAttributeSet* attribute_set );
+AtkAttributeSet* attribute_set_prepend_tracked_change_deletion( AtkAttributeSet* attribute_set );
+AtkAttributeSet* attribute_set_prepend_tracked_change_formatchange( AtkAttributeSet* attribute_set );
+// <--
#endif
diff --git a/vcl/unx/gtk/a11y/atkwindow.cxx b/vcl/unx/gtk/a11y/atkwindow.cxx
index f588c1e345e4..5448235998e8 100644
--- a/vcl/unx/gtk/a11y/atkwindow.cxx
+++ b/vcl/unx/gtk/a11y/atkwindow.cxx
@@ -143,6 +143,22 @@ ooo_window_wrapper_real_focus_gtk (GtkWidget *, GdkEventFocus *)
return FALSE;
}
+static gboolean ooo_tooltip_map( GtkWidget* pToolTip, gpointer )
+{
+ AtkObject* pAccessible = gtk_widget_get_accessible( pToolTip );
+ if( pAccessible )
+ atk_object_notify_state_change( pAccessible, ATK_STATE_SHOWING, TRUE );
+ return FALSE;
+}
+
+static gboolean ooo_tooltip_unmap( GtkWidget* pToolTip, gpointer )
+{
+ AtkObject* pAccessible = gtk_widget_get_accessible( pToolTip );
+ if( pAccessible )
+ atk_object_notify_state_change( pAccessible, ATK_STATE_SHOWING, FALSE );
+ return FALSE;
+}
+
/*****************************************************************************/
static bool
@@ -208,6 +224,16 @@ ooo_window_wrapper_real_initialize(AtkObject *obj, gpointer data)
g_signal_connect_after( GTK_WIDGET( data ), "focus-out-event",
G_CALLBACK (ooo_window_wrapper_real_focus_gtk),
NULL);
+
+ if( obj->role == ATK_ROLE_TOOL_TIP )
+ {
+ g_signal_connect_after( GTK_WIDGET( data ), "map-event",
+ G_CALLBACK (ooo_tooltip_map),
+ NULL);
+ g_signal_connect_after( GTK_WIDGET( data ), "unmap-event",
+ G_CALLBACK (ooo_tooltip_unmap),
+ NULL);
+ }
}
/*****************************************************************************/
diff --git a/vcl/unx/gtk/a11y/atkwrapper.cxx b/vcl/unx/gtk/a11y/atkwrapper.cxx
index 5beb838c0e82..10f75309708d 100644
--- a/vcl/unx/gtk/a11y/atkwrapper.cxx
+++ b/vcl/unx/gtk/a11y/atkwrapper.cxx
@@ -283,7 +283,9 @@ static AtkRole mapToAtkRole( sal_Int16 nRole )
ATK_ROLE_RULER,
ATK_ROLE_UNKNOWN, // SECTION - registered below
ATK_ROLE_UNKNOWN, // TREE_ITEM - registered below
- ATK_ROLE_TREE_TABLE
+ ATK_ROLE_TREE_TABLE,
+ ATK_ROLE_SCROLL_PANE, // COMMENT - mapped to atk_role_scroll_pane
+ ATK_ROLE_UNKNOWN // COMMENT_END - mapped to atk_role_unknown
};
static bool initialized = false;
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index d1e5c5954352..f63f999738a7 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -800,15 +800,12 @@ void GtkXLib::Yield( bool bWait, bool bHandleAllCurrentEvents )
*/
bool bDispatchThread = false;
+ gboolean wasEvent = FALSE;
{
// release YieldMutex (and re-acquire at block end)
YieldMutexReleaser aReleaser;
if( osl_tryToAcquireMutex( m_aDispatchMutex ) )
- {
- // we are the dispatch thread
- osl_resetCondition( m_aDispatchCondition );
bDispatchThread = true;
- }
else if( ! bWait )
return; // someone else is waiting already, return
@@ -816,7 +813,7 @@ void GtkXLib::Yield( bool bWait, bool bHandleAllCurrentEvents )
if( bDispatchThread )
{
int nMaxEvents = bHandleAllCurrentEvents ? 100 : 1;
- gboolean wasEvent = FALSE, wasOneEvent = TRUE;
+ gboolean wasOneEvent = TRUE;
while( nMaxEvents-- && wasOneEvent )
{
wasOneEvent = g_main_context_iteration( NULL, FALSE );
@@ -824,17 +821,17 @@ void GtkXLib::Yield( bool bWait, bool bHandleAllCurrentEvents )
wasEvent = TRUE;
}
if( bWait && ! wasEvent )
- g_main_context_iteration( NULL, TRUE );
+ wasEvent = g_main_context_iteration( NULL, TRUE );
}
- else if( userEventFn( this ) )
+ else if( bWait )
{
/* #i41693# in case the dispatch thread hangs in join
* for this thread the condition will never be set
* workaround: timeout of 1 second a emergency exit
*/
- TimeValue aValue;
- aValue.Seconds = 1;
- aValue.Nanosec = 0;
+ // we are the dispatch thread
+ osl_resetCondition( m_aDispatchCondition );
+ TimeValue aValue = { 1, 0 };
osl_waitCondition( m_aDispatchCondition, &aValue );
}
}
@@ -842,8 +839,8 @@ void GtkXLib::Yield( bool bWait, bool bHandleAllCurrentEvents )
if( bDispatchThread )
{
osl_releaseMutex( m_aDispatchMutex );
- osl_setCondition( m_aDispatchCondition ); // trigger non dispatch thread yields
- osl_resetCondition( m_aDispatchCondition );
+ if( wasEvent )
+ osl_setCondition( m_aDispatchCondition ); // trigger non dispatch thread yields
}
}
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index ef356eb57aa9..16e478c22f6e 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -690,7 +690,7 @@ static void lcl_set_accept_focus( GtkWindow* pWindow, gboolean bAccept, bool bBe
XFree( pHints );
if (GetX11SalData()->GetDisplay()->getWMAdaptor()->getWindowManagerName().EqualsAscii("compiz"))
- return;
+ return;
/* remove WM_TAKE_FOCUS protocol; this would usually be the
* right thing, but gtk handles it internally whereas we
@@ -844,7 +844,8 @@ void GtkSalFrame::Init( SalFrame* pParent, ULONG nStyle )
eType = GDK_WINDOW_TYPE_HINT_UTILITY;
}
- if( (nStyle & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN ) )
+ if( (nStyle & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN )
+ && getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
{
eType = GDK_WINDOW_TYPE_HINT_TOOLBAR;
gtk_window_set_keep_above( GTK_WINDOW(m_pWindow), true );
@@ -1304,7 +1305,8 @@ void GtkSalFrame::Show( BOOL bVisible, BOOL bNoActivate )
{
if( m_pWindow )
{
- if( m_pParent && (m_pParent->m_nStyle & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN) )
+ if( m_pParent && (m_pParent->m_nStyle & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN)
+ && getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
gtk_window_set_keep_above( GTK_WINDOW(m_pWindow), bVisible );
if( bVisible )
{
@@ -1465,6 +1467,12 @@ void GtkSalFrame::setMinMaxSize()
aHints |= GDK_HINT_MAX_SIZE;
}
}
+ if( m_bFullscreen )
+ {
+ aGeo.max_width = m_aMaxSize.Width();
+ aGeo.max_height = m_aMaxSize.Height();
+ aHints |= GDK_HINT_MAX_SIZE;
+ }
if( aHints )
gtk_window_set_geometry_hints( GTK_WINDOW(m_pWindow),
NULL,
@@ -1816,8 +1824,6 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
{
m_aRestorePosSize = Rectangle( Point( maGeometry.nX, maGeometry.nY ),
Size( maGeometry.nWidth, maGeometry.nHeight ) );
- // workaround different window managers have different opinions about
- // _NET_WM_STATE_FULLSCREEN (Metacity <-> KWin)
bool bVisible = GTK_WIDGET_MAPPED(m_pWindow);
if( bVisible )
Show( FALSE );
@@ -1834,12 +1840,22 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
gtk_window_move( GTK_WINDOW(m_pWindow),
maGeometry.nX = aNewPosSize.Left(),
maGeometry.nY = aNewPosSize.Top() );
+ // #i110881# for the benefit of compiz set a max size here
+ // else setting to fullscreen fails for unknown reasons
+ m_aMaxSize.Width() = aNewPosSize.GetWidth()+100;
+ m_aMaxSize.Height() = aNewPosSize.GetHeight()+100;
+ // workaround different legacy version window managers have different opinions about
+ // _NET_WM_STATE_FULLSCREEN (Metacity <-> KWin)
+ if( ! getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
+ gtk_window_fullscreen( GTK_WINDOW( m_pWindow ) );
if( bVisible )
Show( TRUE );
}
else
{
bool bVisible = GTK_WIDGET_MAPPED(m_pWindow);
+ if( ! getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
+ gtk_window_unfullscreen( GTK_WINDOW(m_pWindow) );
if( bVisible )
Show( FALSE );
m_nStyle &= ~SAL_FRAME_STYLE_PARTIAL_FULLSCREEN;
@@ -1862,8 +1878,11 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
{
if( bFullScreen )
{
- if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
- gtk_window_set_resizable( GTK_WINDOW(m_pWindow), TRUE );
+ if( getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
+ {
+ if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
+ gtk_window_set_resizable( GTK_WINDOW(m_pWindow), TRUE );
+ }
gtk_window_fullscreen( GTK_WINDOW(m_pWindow) );
moveToScreen( nScreen );
Size aScreenSize = pDisp->GetScreenSize( m_nScreen );
@@ -1875,8 +1894,11 @@ void GtkSalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
else
{
gtk_window_unfullscreen( GTK_WINDOW(m_pWindow) );
- if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
- gtk_window_set_resizable( GTK_WINDOW(m_pWindow), FALSE );
+ if( getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
+ {
+ if( !(m_nStyle & SAL_FRAME_STYLE_SIZEABLE) )
+ gtk_window_set_resizable( GTK_WINDOW(m_pWindow), FALSE );
+ }
moveToScreen( nScreen );
}
}
@@ -3184,6 +3206,15 @@ gboolean GtkSalFrame::signalState( GtkWidget*, GdkEvent* pEvent, gpointer frame
}
pThis->m_nState = pEvent->window_state.new_window_state;
+ #if OSL_DEBUG_LEVEL > 1
+ if( (pEvent->window_state.changed_mask & GDK_WINDOW_STATE_FULLSCREEN) )
+ {
+ fprintf( stderr, "window %p %s full screen state\n",
+ pThis,
+ (pEvent->window_state.new_window_state & GDK_WINDOW_STATE_FULLSCREEN) ? "enters" : "leaves");
+ }
+ #endif
+
return FALSE;
}
diff --git a/vcl/unx/inc/saldata.hxx b/vcl/unx/inc/saldata.hxx
index 3810558d470d..7e38e0a89bf2 100644
--- a/vcl/unx/inc/saldata.hxx
+++ b/vcl/unx/inc/saldata.hxx
@@ -62,6 +62,7 @@ protected:
SalXLib *pXLib_;
SalDisplay *m_pSalDisplay;
pthread_t hMainThread_;
+ rtl::OUString maLocalHostName;
public:
X11SalData();
@@ -87,6 +88,9 @@ public:
inline void StopTimer();
void Timeout() const;
+ const rtl::OUString& GetLocalHostName() const
+ { return maLocalHostName; }
+
static int XErrorHdl( Display*, XErrorEvent* );
static int XIOErrorHdl( Display* );
diff --git a/vcl/unx/inc/wmadaptor.hxx b/vcl/unx/inc/wmadaptor.hxx
index c628cfe091ef..cbedede2cc99 100644
--- a/vcl/unx/inc/wmadaptor.hxx
+++ b/vcl/unx/inc/wmadaptor.hxx
@@ -58,6 +58,8 @@ public:
NET_WM_NAME,
NET_WM_DESKTOP,
NET_WM_ICON_NAME,
+ NET_WM_PID,
+ NET_WM_PING,
NET_WM_STATE,
NET_WM_STATE_MAXIMIZED_HORZ,
NET_WM_STATE_MAXIMIZED_VERT,
@@ -160,6 +162,7 @@ protected:
m_aWMWorkAreas;
bool m_bTransientBehaviour;
bool m_bEnableAlwaysOnTopWorks;
+ bool m_bLegacyPartialFullscreen;
int m_nWinGravity;
int m_nInitWinGravity;
@@ -220,6 +223,18 @@ public:
virtual void setWMName( X11SalFrame* pFrame, const String& rWMName ) const;
/*
+ * set NET_WM_PID
+ */
+ virtual void setPID( X11SalFrame* pFrame ) const;
+
+ /*
+ * set WM_CLIENT_MACHINE
+ */
+ virtual void setClientMachine( X11SalFrame* pFrame ) const;
+
+ virtual void answerPing( X11SalFrame*, XClientMessageEvent* ) const;
+
+ /*
* maximizes frame
* maximization can be toggled in either direction
* to get the original position and size
@@ -231,6 +246,15 @@ public:
*/
virtual void showFullScreen( X11SalFrame* pFrame, bool bFullScreen ) const;
/*
+ * tell whether legacy partial full screen handling is necessary
+ * see #i107249#: NET_WM_STATE_FULLSCREEN is not well defined, but de facto
+ * modern WM's interpret it the "right" way, namely they make "full screen"
+ * taking twin view or Xinerama into accound and honor the positioning hints
+ * to see which screen actually was meant to use for fullscreen.
+ */
+ bool isLegacyPartialFullscreen() const
+ { return m_bLegacyPartialFullscreen; }
+ /*
* set window struts
*/
virtual void setFrameStruts( X11SalFrame*pFrame,
diff --git a/vcl/unx/source/app/saldata.cxx b/vcl/unx/source/app/saldata.cxx
index 4155887a9875..75d18de0787a 100644
--- a/vcl/unx/source/app/saldata.cxx
+++ b/vcl/unx/source/app/saldata.cxx
@@ -276,6 +276,7 @@ X11SalData::X11SalData()
m_pPlugin = NULL;
hMainThread_ = pthread_self();
+ osl_getLocalHostname( &maLocalHostName.pData );
}
X11SalData::~X11SalData()
diff --git a/vcl/unx/source/app/saldisp.cxx b/vcl/unx/source/app/saldisp.cxx
index 2ed699ad0eb5..aa2afab93657 100644
--- a/vcl/unx/source/app/saldisp.cxx
+++ b/vcl/unx/source/app/saldisp.cxx
@@ -322,12 +322,12 @@ sal_IsLocalDisplay( Display *pDisplay )
if( pPtr != NULL )
{
- OUString aLocalHostname;
- if( osl_getLocalHostname( &aLocalHostname.pData ) == osl_Socket_Ok)
+ const OUString& rLocalHostname( GetX11SalData()->GetLocalHostName() );
+ if( rLocalHostname.getLength() )
{
*pPtr = '\0';
OUString aDisplayHostname( pDisplayHost, strlen( pDisplayHost ), osl_getThreadTextEncoding() );
- bEqual = sal_EqualHosts( aLocalHostname, aDisplayHostname );
+ bEqual = sal_EqualHosts( rLocalHostname, aDisplayHostname );
bEqual = bEqual && sal_IsDisplayNumber( pPtr + 1 );
}
}
diff --git a/vcl/unx/source/app/wmadaptor.cxx b/vcl/unx/source/app/wmadaptor.cxx
index 89c8bb56291c..fb2317e19573 100644
--- a/vcl/unx/source/app/wmadaptor.cxx
+++ b/vcl/unx/source/app/wmadaptor.cxx
@@ -34,6 +34,7 @@
#include <sal/alloca.h>
#include <wmadaptor.hxx>
#include <saldisp.hxx>
+#include <saldata.hxx>
#include <salframe.h>
#include <vcl/salgdi.hxx>
#include <osl/thread.h>
@@ -118,6 +119,7 @@ static const WMAdaptorProtocol aProtocolTab[] =
{ "_NET_NUMBER_OF_DESKTOPS", WMAdaptor::NET_NUMBER_OF_DESKTOPS },
{ "_NET_WM_DESKTOP", WMAdaptor::NET_WM_DESKTOP },
{ "_NET_WM_ICON_NAME", WMAdaptor::NET_WM_ICON_NAME },
+ { "_NET_WM_PING", WMAdaptor::NET_WM_PING },
{ "_NET_WM_STATE", WMAdaptor::NET_WM_STATE },
{ "_NET_WM_STATE_ABOVE", WMAdaptor::NET_WM_STATE_STAYS_ON_TOP },
{ "_NET_WM_STATE_FULLSCREEN", WMAdaptor::NET_WM_STATE_FULLSCREEN },
@@ -179,7 +181,8 @@ static const WMAdaptorProtocol aAtomTab[] =
{ "_XSETTINGS_SETTINGS", WMAdaptor::XSETTINGS },
{ "_XEMBED", WMAdaptor::XEMBED },
{ "_XEMBED_INFO", WMAdaptor::XEMBED_INFO },
- { "_NET_WM_USER_TIME", WMAdaptor::NET_WM_USER_TIME }
+ { "_NET_WM_USER_TIME", WMAdaptor::NET_WM_USER_TIME },
+ { "_NET_WM_PID", WMAdaptor::NET_WM_PID }
};
extern "C" {
@@ -233,6 +236,7 @@ WMAdaptor::WMAdaptor( SalDisplay* pDisplay ) :
m_pSalDisplay( pDisplay ),
m_bTransientBehaviour( true ),
m_bEnableAlwaysOnTopWorks( false ),
+ m_bLegacyPartialFullscreen( false ),
m_nWinGravity( StaticGravity ),
m_nInitWinGravity( StaticGravity )
{
@@ -909,6 +913,40 @@ bool WMAdaptor::getNetWmName()
XFree( pProperty );
pProperty = NULL;
}
+ // if this is metacity, check for version to enable a legacy workaround
+ if( m_aWMName.EqualsAscii( "Metacity" ) )
+ {
+ int nVersionMajor = 0, nVersionMinor = 0;
+ Atom nVersionAtom = XInternAtom( m_pDisplay, "_METACITY_VERSION", True );
+ if( nVersionAtom )
+ {
+ if( XGetWindowProperty( m_pDisplay,
+ aWMChild,
+ nVersionAtom,
+ 0, 256,
+ False,
+ m_aWMAtoms[ UTF8_STRING ],
+ &aRealType,
+ &nFormat,
+ &nItems,
+ &nBytesLeft,
+ &pProperty ) == 0
+ && nItems != 0
+ )
+ {
+ String aMetaVersion( (sal_Char*)pProperty, nItems, RTL_TEXTENCODING_UTF8 );
+ nVersionMajor = aMetaVersion.GetToken( 0, '.' ).ToInt32();
+ nVersionMinor = aMetaVersion.GetToken( 1, '.' ).ToInt32();
+ }
+ if( pProperty )
+ {
+ XFree( pProperty );
+ pProperty = NULL;
+ }
+ }
+ if( nVersionMajor < 2 || (nVersionMajor == 2 && nVersionMinor < 12) )
+ m_bLegacyPartialFullscreen = true;
+ }
}
}
else if( pProperty )
@@ -2412,3 +2450,52 @@ void NetWMAdaptor::setUserTime( X11SalFrame* i_pFrame, long i_nUserTime ) const
);
}
}
+
+/*
+ * WMAdaptor::setPID
+ */
+void WMAdaptor::setPID( X11SalFrame* i_pFrame ) const
+{
+ if( m_aWMAtoms[NET_WM_PID] )
+ {
+ long nPID = (long)getpid();
+ XChangeProperty( m_pDisplay,
+ i_pFrame->GetShellWindow(),
+ m_aWMAtoms[NET_WM_PID],
+ XA_CARDINAL,
+ 32,
+ PropModeReplace,
+ (unsigned char*)&nPID,
+ 1
+ );
+ }
+}
+
+/*
+* WMAdaptor::setClientMachine
+*/
+void WMAdaptor::setClientMachine( X11SalFrame* i_pFrame ) const
+{
+ rtl::OString aWmClient( rtl::OUStringToOString( GetX11SalData()->GetLocalHostName(), RTL_TEXTENCODING_ASCII_US ) );
+ XTextProperty aClientProp = { (unsigned char*)aWmClient.getStr(), XA_STRING, 8, aWmClient.getLength() };
+ XSetWMClientMachine( m_pDisplay, i_pFrame->GetShellWindow(), &aClientProp );
+}
+
+void WMAdaptor::answerPing( X11SalFrame* i_pFrame, XClientMessageEvent* i_pEvent ) const
+{
+ if( m_aWMAtoms[NET_WM_PING] &&
+ i_pEvent->message_type == m_aWMAtoms[ WM_PROTOCOLS ] &&
+ (Atom)i_pEvent->data.l[0] == m_aWMAtoms[ NET_WM_PING ] )
+ {
+ XEvent aEvent;
+ aEvent.xclient = *i_pEvent;
+ aEvent.xclient.window = m_pSalDisplay->GetRootWindow( i_pFrame->GetScreenNumber() );
+ XSendEvent( m_pDisplay,
+ m_pSalDisplay->GetRootWindow( i_pFrame->GetScreenNumber() ),
+ False,
+ SubstructureNotifyMask | SubstructureRedirectMask,
+ &aEvent
+ );
+ XFlush( m_pDisplay );
+ }
+}
diff --git a/vcl/unx/source/gdi/salgdi3.cxx b/vcl/unx/source/gdi/salgdi3.cxx
index 7cf2009a3e07..f00ee26c0d4d 100644
--- a/vcl/unx/source/gdi/salgdi3.cxx
+++ b/vcl/unx/source/gdi/salgdi3.cxx
@@ -641,13 +641,11 @@ bool X11SalGraphics::setFont( const ImplFontSelectData *pEntry, int nFallbackLev
mpServerFont[ nFallbackLevel ] = pServerFont;
// apply font specific-hint settings if needed
+ // TODO: also disable it for reference devices
if( !bPrinter_ )
{
- // TODO: is it worth it to cache the hint settings, e.g. in the ImplFontEntry?
- ImplFontOptions aFontOptions;
- bool GetFCFontOptions( const ImplFontAttributes&, int nSize, ImplFontOptions&);
- if( GetFCFontOptions( *pEntry->mpFontData, pEntry->mnHeight, aFontOptions ) )
- pServerFont->SetFontOptions( aFontOptions );
+ ImplServerFontEntry* pSFE = static_cast<ImplServerFontEntry*>( pEntry->mpFontEntry );
+ pSFE->HandleFontOptions();
}
return true;
@@ -656,6 +654,24 @@ bool X11SalGraphics::setFont( const ImplFontSelectData *pEntry, int nFallbackLev
return false;
}
+void ImplServerFontEntry::HandleFontOptions( void )
+{
+ bool GetFCFontOptions( const ImplFontAttributes&, int nSize, ImplFontOptions& );
+
+ if( !mpServerFont )
+ return;
+ if( !mbGotFontOptions )
+ {
+ // get and cache the font options
+ mbGotFontOptions = true;
+ mbValidFontOptions = GetFCFontOptions( *maFontSelData.mpFontData,
+ maFontSelData.mnHeight, maFontOptions );
+ }
+ // apply the font options
+ if( mbValidFontOptions )
+ mpServerFont->SetFontOptions( maFontOptions );
+}
+
//--------------------------------------------------------------------------
inline sal_Unicode SwapBytes( const sal_Unicode nIn )
@@ -1633,11 +1649,13 @@ void X11SalGraphics::GetDevFontSubstList( OutputDevice* )
void cairosubcallback( void* pPattern )
{
CairoWrapper& rCairo = CairoWrapper::get();
- if( rCairo.isValid() )
- {
+ if( !rCairo.isValid() )
+ return;
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- rCairo.ft_font_options_substitute( rStyleSettings.GetCairoFontOptions(), pPattern);
- }
+ const void* pFontOptions = rStyleSettings.GetCairoFontOptions();
+ if( !pFontOptions )
+ return;
+ rCairo.ft_font_options_substitute( pFontOptions, pPattern );
}
bool GetFCFontOptions( const ImplFontAttributes& rFontAttributes, int nSize,
@@ -1664,7 +1682,6 @@ bool GetFCFontOptions( const ImplFontAttributes& rFontAttributes, int nSize,
default:
aInfo.m_eItalic = psp::italic::Unknown;
break;
-
}
// set weight
switch( rFontAttributes.GetWeight() )
@@ -1740,7 +1757,6 @@ bool GetFCFontOptions( const ImplFontAttributes& rFontAttributes, int nSize,
const psp::PrintFontManager& rPFM = psp::PrintFontManager::get();
bool bOK = rPFM.getFontOptions( aInfo, nSize, cairosubcallback, rFontOptions);
-
return bOK;
}
diff --git a/vcl/unx/source/plugadapt/salplug.cxx b/vcl/unx/source/plugadapt/salplug.cxx
index c42c22bc0592..a438760cffba 100644
--- a/vcl/unx/source/plugadapt/salplug.cxx
+++ b/vcl/unx/source/plugadapt/salplug.cxx
@@ -98,6 +98,14 @@ static SalInstance* tryInstance( const OUString& rModuleBase )
{
pCloseModule = NULL;
}
+ /*
+ * #i109007# KDE3 seems to have the same problem; an atexit cleanup
+ * handler, which cannot be resolved anymore if the plugin is already unloaded.
+ */
+ else if( rModuleBase.equalsAscii("kde") )
+ {
+ pCloseModule = NULL;
+ }
GetSalData()->m_pPlugin = aMod;
}
diff --git a/vcl/unx/source/window/salframe.cxx b/vcl/unx/source/window/salframe.cxx
index 5b538626a634..6d243e41db8c 100644
--- a/vcl/unx/source/window/salframe.cxx
+++ b/vcl/unx/source/window/salframe.cxx
@@ -528,6 +528,8 @@ void X11SalFrame::Init( ULONG nSalFrameStyle, int nScreen, SystemParentData* pPa
Atom a[4];
int n = 0;
a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_DELETE_WINDOW );
+ if( pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::NET_WM_PING ) )
+ a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::NET_WM_PING );
if( ! s_pSaveYourselfFrame && ! mpParent)
{
// at all times have only one frame with SaveYourself
@@ -549,11 +551,23 @@ void X11SalFrame::Init( ULONG nSalFrameStyle, int nScreen, SystemParentData* pPa
pHints->win_gravity = GetDisplay()->getWMAdaptor()->getPositionWinGravity();
pHints->x = 0;
pHints->y = 0;
+ if( mbFullScreen )
+ {
+ pHints->flags |= PMaxSize | PMinSize;
+ pHints->max_width = w+100;
+ pHints->max_height = h+100;
+ pHints->min_width = w;
+ pHints->min_height = h;
+ }
XSetWMNormalHints( GetXDisplay(),
GetShellWindow(),
pHints );
XFree (pHints);
+ // set PID and WM_CLIENT_MACHINE
+ pDisplay_->getWMAdaptor()->setClientMachine( this );
+ pDisplay_->getWMAdaptor()->setPID( this );
+
// set client leader
if( aClientLeader )
{
@@ -605,7 +619,8 @@ void X11SalFrame::Init( ULONG nSalFrameStyle, int nScreen, SystemParentData* pPa
eType = WMAdaptor::windowType_Utility;
if( nStyle_ & SAL_FRAME_STYLE_OWNERDRAWDECORATION )
eType = WMAdaptor::windowType_Toolbar;
- if( nStyle_ & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN )
+ if( (nStyle_ & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN)
+ && GetDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
eType = WMAdaptor::windowType_Dock;
GetDisplay()->getWMAdaptor()->
@@ -735,6 +750,8 @@ void X11SalFrame::passOnSaveYourSelf()
int n = 0;
a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_DELETE_WINDOW );
a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_SAVE_YOURSELF );
+ if( pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::NET_WM_PING ) )
+ a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::NET_WM_PING );
XSetWMProtocols( GetXDisplay(), s_pSaveYourselfFrame->GetShellWindow(), a, n );
}
}
@@ -1130,7 +1147,7 @@ void X11SalFrame::Show( BOOL bVisible, BOOL bNoActivate )
// even though transient frames should be kept above their parent
// this does not necessarily hold true for DOCK type windows
// so artificially set ABOVE and remove it again on hide
- if( mpParent && (mpParent->nStyle_ & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN ) )
+ if( mpParent && (mpParent->nStyle_ & SAL_FRAME_STYLE_PARTIAL_FULLSCREEN ) && pDisplay_->getWMAdaptor()->isLegacyPartialFullscreen())
pDisplay_->getWMAdaptor()->enableAlwaysOnTop( this, bVisible );
bMapped_ = bVisible;
@@ -1322,11 +1339,6 @@ void X11SalFrame::Show( BOOL bVisible, BOOL bNoActivate )
}
else
{
-#if OSL_DEBUG_LEVEL > 1
- if( nStyle_ & SAL_FRAME_STYLE_OWNERDRAWDECORATION )
- fprintf( stderr, "hide on ownerdraw\n" );
-#endif
-
if( getInputContext() )
getInputContext()->Unmap( this );
@@ -1616,6 +1628,7 @@ void X11SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, USHOR
}
else
SetPosSize( aPosSize );
+
bDefaultPosition_ = False;
}
@@ -2042,6 +2055,12 @@ void X11SalFrame::SetPosSize( const Rectangle &rPosSize )
pHints->y = values.y;
pHints->win_gravity = pDisplay_->getWMAdaptor()->getPositionWinGravity();
}
+ if( mbFullScreen )
+ {
+ pHints->max_width = 10000;
+ pHints->max_height = 10000;
+ pHints->flags |= PMaxSize;
+ }
XSetWMNormalHints( GetXDisplay(),
GetShellWindow(),
pHints );
@@ -2199,28 +2218,15 @@ void X11SalFrame::ShowFullScreen( BOOL bFullScreen, sal_Int32 nScreen )
maGeometry.nWidth = aRect.GetWidth();
maGeometry.nHeight = aRect.GetHeight();
mbMaximizedHorz = mbMaximizedVert = false;
+ mbFullScreen = true;
createNewWindow( None, m_nScreen );
- GetDisplay()->getWMAdaptor()->enableAlwaysOnTop( this, true );
- #if 0
- // this would give additional intent to the window
- // manager to force the positioning of the window;
- // alas all other windows will be expunged from that
- // region, leaving us in a pity state afterwards
- Size aScreenSize = pDisplay_->GetScreenSize( m_nScreen );
- pDisplay_->getWMAdaptor()->setFrameStruts( this,
- aRect.Left(), aRect.Top(),
- aScreenSize.Width() - aRect.Right(),
- aScreenSize.Height() - aRect.Bottom(),
- aRect.Left(), aRect.Right(),
- aRect.Top(), aRect.Bottom(),
- aRect.Left(), aRect.Right(),
- aRect.Top(), aRect.Bottom()
- );
- #endif
-
+ if( GetDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
+ GetDisplay()->getWMAdaptor()->enableAlwaysOnTop( this, true );
+ else
+ GetDisplay()->getWMAdaptor()->showFullScreen( this, true );
if( bVisible )
Show(TRUE);
- mbFullScreen = true;
+
}
else
{
@@ -3927,52 +3933,56 @@ long X11SalFrame::HandleClientMessage( XClientMessageEvent *pEvent )
Close(); // ???
return 1;
}
- else if( pEvent->message_type == rWMAdaptor.getAtom( WMAdaptor::WM_PROTOCOLS )
- && ! ( nStyle_ & SAL_FRAME_STYLE_PLUG )
- && ! (( nStyle_ & SAL_FRAME_STYLE_FLOAT ) && (nStyle_ & SAL_FRAME_STYLE_OWNERDRAWDECORATION))
- )
+ else if( pEvent->message_type == rWMAdaptor.getAtom( WMAdaptor::WM_PROTOCOLS ) )
{
- if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_DELETE_WINDOW ) )
- {
- Close();
- return 1;
- }
- else if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_TAKE_FOCUS ) )
- {
- // do nothing, we set the input focus in ToTop() if necessary
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "got WM_TAKE_FOCUS on %s window\n",
- (nStyle_&SAL_FRAME_STYLE_OWNERDRAWDECORATION) ?
- "ownerdraw" : "NON OWNERDRAW" );
-#endif
- }
- else if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_SAVE_YOURSELF ) )
+ if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::NET_WM_PING ) )
+ rWMAdaptor.answerPing( this, pEvent );
+ else if( ! ( nStyle_ & SAL_FRAME_STYLE_PLUG )
+ && ! (( nStyle_ & SAL_FRAME_STYLE_FLOAT ) && (nStyle_ & SAL_FRAME_STYLE_OWNERDRAWDECORATION))
+ )
{
- bool bSession = rWMAdaptor.getWindowManagerName().EqualsAscii( "Dtwm" );
-
- if( ! bSession )
+ if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_DELETE_WINDOW ) )
+ {
+ Close();
+ return 1;
+ }
+ else if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_TAKE_FOCUS ) )
{
- if( this == s_pSaveYourselfFrame )
+ // do nothing, we set the input focus in ToTop() if necessary
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "got WM_TAKE_FOCUS on %s window\n",
+ (nStyle_&SAL_FRAME_STYLE_OWNERDRAWDECORATION) ?
+ "ownerdraw" : "NON OWNERDRAW" );
+ #endif
+ }
+ else if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_SAVE_YOURSELF ) )
+ {
+ bool bSession = rWMAdaptor.getWindowManagerName().EqualsAscii( "Dtwm" );
+
+ if( ! bSession )
{
- ByteString aExec( SessionManagerClient::getExecName(), osl_getThreadTextEncoding() );
- const char* argv[2];
- argv[0] = "/bin/sh";
- argv[1] = const_cast<char*>(aExec.GetBuffer());
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "SaveYourself request, setting command: %s %s\n", argv[0], argv[1] );
-#endif
- XSetCommand( GetXDisplay(), GetShellWindow(), (char**)argv, 2 );
+ if( this == s_pSaveYourselfFrame )
+ {
+ ByteString aExec( SessionManagerClient::getExecName(), osl_getThreadTextEncoding() );
+ const char* argv[2];
+ argv[0] = "/bin/sh";
+ argv[1] = const_cast<char*>(aExec.GetBuffer());
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "SaveYourself request, setting command: %s %s\n", argv[0], argv[1] );
+ #endif
+ XSetCommand( GetXDisplay(), GetShellWindow(), (char**)argv, 2 );
+ }
+ else
+ // can only happen in race between WM and window closing
+ XChangeProperty( GetXDisplay(), GetShellWindow(), rWMAdaptor.getAtom( WMAdaptor::WM_COMMAND ), XA_STRING, 8, PropModeReplace, (unsigned char*)"", 0 );
}
else
- // can only happen in race between WM and window closing
- XChangeProperty( GetXDisplay(), GetShellWindow(), rWMAdaptor.getAtom( WMAdaptor::WM_COMMAND ), XA_STRING, 8, PropModeReplace, (unsigned char*)"", 0 );
- }
- else
- {
- // save open documents; would be good for non Dtwm, too,
- // but there is no real Shutdown message in the ancient
- // SM protocol; on Dtwm SaveYourself really means Shutdown, too.
- IceSalSession::handleOldX11SaveYourself( this );
+ {
+ // save open documents; would be good for non Dtwm, too,
+ // but there is no real Shutdown message in the ancient
+ // SM protocol; on Dtwm SaveYourself really means Shutdown, too.
+ IceSalSession::handleOldX11SaveYourself( this );
+ }
}
}
}
diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx
index ebe470d3eb7e..1638c4e1bd36 100644
--- a/vcl/win/source/gdi/salgdi3.cxx
+++ b/vcl/win/source/gdi/salgdi3.cxx
@@ -47,11 +47,15 @@
#include "vcl/fontsubset.hxx"
#include "vcl/sallayout.hxx"
+#include "vcl/outdev.h" // for ImplGlyphFallbackFontSubstitution
+#include "unotools/fontcfg.hxx" // for IMPL_FONT_ATTR_SYMBOL
+
#include "rtl/logfile.hxx"
#include "rtl/tencinfo.h"
#include "rtl/textcvt.h"
#include "rtl/bootstrap.hxx"
+#include "i18npool/mslangid.hxx"
#include "osl/module.h"
#include "osl/file.hxx"
@@ -82,7 +86,6 @@
#include <set>
#include <map>
-
using namespace vcl;
static const int MAXFONTHEIGHT = 2048;
@@ -314,6 +317,308 @@ RawFontData::RawFontData( HDC hDC, DWORD nTableTag )
}
}
+// ===========================================================================
+// platform specific font substitution hooks for glyph fallback enhancement
+// TODO: move into i18n module (maybe merge with svx/ucsubset.*
+// or merge with i18nutil/source/utility/unicode_data.h)
+struct Unicode2LangType
+{
+ sal_UCS4 mnMinCode;
+ sal_UCS4 mnMaxCode;
+ LanguageType mnLangID;
+};
+
+// entries marked with default-CJK get replaced with the default-CJK language
+#define LANGUAGE_DEFAULT_CJK 0xFFF0
+
+// map unicode ranges to languages supported by OOo
+// NOTE: due to the binary search used this list must be sorted by mnMinCode
+static Unicode2LangType aLangFromCodeChart[]= {
+ {0x0000, 0x007F, LANGUAGE_ENGLISH}, // Basic Latin
+ {0x0080, 0x024F, LANGUAGE_ENGLISH}, // Latin Extended-A and Latin Extended-B
+ {0x0250, 0x02AF, LANGUAGE_SYSTEM}, // IPA Extensions
+ {0x0370, 0x03FF, LANGUAGE_GREEK}, // Greek
+ {0x0590, 0x05FF, LANGUAGE_HEBREW}, // Hebrew
+ {0x0600, 0x06FF, LANGUAGE_ARABIC_PRIMARY_ONLY}, // Arabic
+ {0x0900, 0x097F, LANGUAGE_HINDI}, // Devanagari
+ {0x0980, 0x09FF, LANGUAGE_BENGALI}, // Bengali
+ {0x0A80, 0x0AFF, LANGUAGE_GUJARATI}, // Gujarati
+ {0x0B00, 0x0B7F, LANGUAGE_ORIYA}, // Oriya
+ {0x0B80, 0x0BFF, LANGUAGE_TAMIL}, // Tamil
+ {0x0C00, 0x0C7F, LANGUAGE_TELUGU}, // Telugu
+ {0x0C80, 0x0CFF, LANGUAGE_KANNADA}, // Kannada
+ {0x0D00, 0x0D7F, LANGUAGE_MALAYALAM}, // Malayalam
+ {0x0D80, 0x0D7F, LANGUAGE_SINHALESE_SRI_LANKA}, // Sinhala
+ {0x0E00, 0x0E7F, LANGUAGE_THAI}, // Thai
+ {0x0E80, 0x0EFF, LANGUAGE_LAO}, // Lao
+ {0x0F00, 0x0FFF, LANGUAGE_TIBETAN}, // Tibetan
+ {0x1000, 0x109F, LANGUAGE_BURMESE}, // Burmese
+ {0x10A0, 0x10FF, LANGUAGE_GEORGIAN}, // Georgian
+ {0x1100, 0x11FF, LANGUAGE_KOREAN}, // Hangul Jamo, Korean-specific
+// {0x1200, 0x139F, LANGUAGE_AMHARIC_ETHIOPIA}, // Ethiopic
+// {0x1200, 0x139F, LANGUAGE_TIGRIGNA_ETHIOPIA}, // Ethiopic
+ {0x13A0, 0x13FF, LANGUAGE_CHEROKEE_UNITED_STATES}, // Cherokee
+// {0x1400, 0x167F, LANGUAGE_CANADIAN_ABORIGINAL}, // Canadian Aboriginial Syllabics
+// {0x1680, 0x169F, LANGUAGE_OGHAM}, // Ogham
+// {0x16A0, 0x16F0, LANGUAGE_RUNIC}, // Runic
+// {0x1700, 0x171F, LANGUAGE_TAGALOG}, // Tagalog
+// {0x1720, 0x173F, LANGUAGE_HANUNOO}, // Hanunoo
+// {0x1740, 0x175F, LANGUAGE_BUHID}, // Buhid
+// {0x1760, 0x177F, LANGUAGE_TAGBANWA}, // Tagbanwa
+ {0x1780, 0x17FF, LANGUAGE_KHMER}, // Khmer
+ {0x18A0, 0x18AF, LANGUAGE_MONGOLIAN}, // Mongolian
+// {0x1900, 0x194F, LANGUAGE_LIMBU}, // Limbu
+// {0x1950, 0x197F, LANGUAGE_TAILE}, // Tai Le
+// {0x1980, 0x19DF, LANGUAGE_TAILUE}, // Tai Lue
+ {0x19E0, 0x19FF, LANGUAGE_KHMER}, // Khmer Symbols
+// {0x1A00, 0x1A1F, LANGUAGE_BUGINESE}, // Buginese/Lontara
+// {0x1B00, 0x1B7F, LANGUAGE_BALINESE}, // Balinese
+// {0x1D00, 0x1DFF, LANGUAGE_NONE}, // Phonetic Symbols
+ {0x1E00, 0x1EFF, LANGUAGE_ENGLISH}, // Latin Extended Additional
+ {0x1F00, 0x1FFF, LANGUAGE_GREEK}, // Greek Extended
+ {0x2C60, 0x2C7F, LANGUAGE_ENGLISH}, // Latin Extended-C
+ {0x2E80, 0x2FFf, LANGUAGE_CHINESE_SIMPLIFIED}, // CJK Radicals Supplement + Kangxi Radical + Ideographic Description Characters
+ {0x3000, 0x303F, LANGUAGE_DEFAULT_CJK}, // CJK Symbols and punctuation
+ {0x3040, 0x30FF, LANGUAGE_JAPANESE}, // Japanese Hiragana + Katakana
+ {0x3100, 0x312F, LANGUAGE_CHINESE_TRADITIONAL}, // Bopomofo
+ {0x3130, 0x318F, LANGUAGE_KOREAN}, // Hangul Compatibility Jamo, Kocrean-specific
+ {0x3190, 0x319F, LANGUAGE_JAPANESE}, // Kanbun
+ {0x31A0, 0x31BF, LANGUAGE_CHINESE_TRADITIONAL}, // Bopomofo Extended
+ {0x31C0, 0x31EF, LANGUAGE_DEFAULT_CJK}, // CJK Ideographs
+ {0x31F0, 0x31FF, LANGUAGE_JAPANESE}, // Japanese Katakana Phonetic Extensions
+ {0x3200, 0x321F, LANGUAGE_KOREAN}, // Parenthesized Hangul
+ {0x3220, 0x325F, LANGUAGE_DEFAULT_CJK}, // Parenthesized Ideographs
+ {0x3260, 0x327F, LANGUAGE_KOREAN}, // Circled Hangul
+ {0x3280, 0x32CF, LANGUAGE_DEFAULT_CJK}, // Circled Ideographs
+ {0x32d0, 0x32FF, LANGUAGE_JAPANESE}, // Japanese Circled Katakana
+ {0x3400, 0x4DBF, LANGUAGE_DEFAULT_CJK}, // CJK Unified Ideographs Extension A
+ {0x4E00, 0x9FCF, LANGUAGE_DEFAULT_CJK}, // Unified CJK Ideographs
+ {0xA720, 0xA7FF, LANGUAGE_ENGLISH}, // Latin Extended-D
+ {0xAC00, 0xD7AF, LANGUAGE_KOREAN}, // Hangul Syllables, Korean-specific
+ {0xF900, 0xFAFF, LANGUAGE_DEFAULT_CJK}, // CJK Compatibility Ideographs
+ {0xFB00, 0xFB4F, LANGUAGE_HEBREW}, // Hebrew Presentation Forms
+ {0xFB50, 0xFDFF, LANGUAGE_ARABIC_PRIMARY_ONLY}, // Arabic Presentation Forms-A
+ {0xFE70, 0xFEFE, LANGUAGE_ARABIC_PRIMARY_ONLY}, // Arabic Presentation Forms-B
+ {0xFF65, 0xFF9F, LANGUAGE_JAPANESE}, // Japanese Halfwidth Katakana variant
+ {0xFFA0, 0xFFDC, LANGUAGE_KOREAN}, // Kocrean halfwidth hangual variant
+ {0x10140, 0x1018F, LANGUAGE_GREEK}, // Ancient Greak numbers
+ {0x1D200, 0x1D24F, LANGUAGE_GREEK}, // Ancient Greek Musical
+ {0x20000, 0x2A6DF, LANGUAGE_DEFAULT_CJK}, // CJK Unified Ideographs Extension B
+ {0x2F800, 0x2FA1F, LANGUAGE_DEFAULT_CJK} // CJK Compatibility Ideographs Supplement
+};
+
+// get language matching to the missing char
+LanguageType MapCharToLanguage( sal_UCS4 uChar )
+{
+ // entries marked with default-CJK get replaced with the prefered CJK language
+ static bool bFirst = true;
+ if( bFirst )
+ {
+ bFirst = false;
+
+ // use method suggested in #i97086# to determnine the systems default language
+ // TODO: move into i18npool or sal/osl/w32/nlsupport.c
+ LanguageType nDefaultLang = 0;
+ HKEY hKey = NULL;
+ LONG lResult = ::RegOpenKeyExA( HKEY_LOCAL_MACHINE,
+ "SYSTEM\\CurrentControlSet\\Control\\Nls\\Language",
+ 0, KEY_QUERY_VALUE, &hKey );
+ char aKeyValBuf[16];
+ DWORD nKeyValSize = sizeof(aKeyValBuf);
+ if( ERROR_SUCCESS == lResult )
+ lResult = RegQueryValueExA( hKey, "Default", NULL, NULL, (LPBYTE)aKeyValBuf, &nKeyValSize );
+ aKeyValBuf[ sizeof(aKeyValBuf)-1 ] = '\0';
+ if( ERROR_SUCCESS == lResult )
+ nDefaultLang = (LanguageType)rtl_str_toInt32( aKeyValBuf, 16 );
+
+ // TODO: use the default-CJK language selected in
+ // Tools->Options->LangSettings->Languages when it becomes available here
+ if( !nDefaultLang )
+ nDefaultLang = Application::GetSettings().GetUILanguage();
+
+ LanguageType nDefaultCJK = LANGUAGE_CHINESE;
+ switch( nDefaultLang )
+ {
+ case LANGUAGE_JAPANESE:
+ case LANGUAGE_KOREAN:
+ case LANGUAGE_KOREAN_JOHAB:
+ case LANGUAGE_CHINESE_SIMPLIFIED:
+ case LANGUAGE_CHINESE_TRADITIONAL:
+ case LANGUAGE_CHINESE_SINGAPORE:
+ case LANGUAGE_CHINESE_HONGKONG:
+ case LANGUAGE_CHINESE_MACAU:
+ nDefaultCJK = nDefaultLang;
+ break;
+ default:
+ nDefaultCJK = LANGUAGE_CHINESE;
+ break;
+ }
+
+ // change the marked entries to prefered language
+ static const int nCount = (sizeof(aLangFromCodeChart) / sizeof(*aLangFromCodeChart));
+ for( int i = 0; i < nCount; ++i )
+ {
+ if( aLangFromCodeChart[ i].mnLangID == LANGUAGE_DEFAULT_CJK )
+ aLangFromCodeChart[ i].mnLangID = nDefaultCJK;
+ }
+ }
+
+ // binary search
+ int nLow = 0;
+ int nHigh = (sizeof(aLangFromCodeChart) / sizeof(*aLangFromCodeChart)) - 1;
+ while( nLow <= nHigh )
+ {
+ int nMiddle = (nHigh + nLow) / 2;
+ if( uChar < aLangFromCodeChart[ nMiddle].mnMinCode )
+ nHigh = nMiddle - 1;
+ else if( uChar > aLangFromCodeChart[ nMiddle].mnMaxCode )
+ nLow = nMiddle + 1;
+ else
+ return aLangFromCodeChart[ nMiddle].mnLangID;
+ }
+
+ return LANGUAGE_DONTKNOW;
+}
+
+class WinGlyphFallbackSubstititution
+: public ImplGlyphFallbackFontSubstitution
+{
+public:
+ explicit WinGlyphFallbackSubstititution( HDC );
+
+ bool FindFontSubstitute( ImplFontSelectData&, rtl::OUString& rMissingChars ) const;
+private:
+ HDC mhDC;
+ bool HasMissingChars( const ImplFontData*, const rtl::OUString& rMissingChars ) const;
+};
+
+inline WinGlyphFallbackSubstititution::WinGlyphFallbackSubstititution( HDC hDC )
+: mhDC( hDC )
+{}
+
+void ImplGetLogFontFromFontSelect( HDC, const ImplFontSelectData*,
+ LOGFONTW&, bool /*bTestVerticalAvail*/ );
+
+// does a font face hold the given missing characters?
+bool WinGlyphFallbackSubstititution::HasMissingChars( const ImplFontData* pFace, const rtl::OUString& rMissingChars ) const
+{
+ const ImplWinFontData* pWinFont = static_cast<const ImplWinFontData*>(pFace);
+ const ImplFontCharMap* pCharMap = pWinFont->GetImplFontCharMap();
+ if( !pCharMap )
+ {
+ // construct a Size structure as the parameter of constructor of class ImplFontSelectData
+ const Size aSize( pFace->GetWidth(), pFace->GetHeight() );
+ // create a ImplFontSelectData object for getting s LOGFONT
+ const ImplFontSelectData aFSD( *pFace, aSize, (float)aSize.Height(), 0, false );
+ // construct log font
+ LOGFONTW aLogFont;
+ ImplGetLogFontFromFontSelect( mhDC, &aFSD, aLogFont, true );
+
+ // create HFONT from log font
+ HFONT hNewFont = ::CreateFontIndirectW( &aLogFont );
+ // select the new font into device
+ HFONT hOldFont = ::SelectFont( mhDC, hNewFont );
+
+ // read CMAP table to update their pCharMap
+ pWinFont->UpdateFromHDC( mhDC );;
+
+ // cleanup temporary font
+ ::SelectFont( mhDC, hOldFont );
+ ::DeleteFont( hNewFont );
+
+ // get the new charmap
+ pCharMap = pWinFont->GetImplFontCharMap();
+ }
+
+ // avoid fonts with unknown CMAP subtables for glyph fallback
+ if( !pCharMap || pCharMap->IsDefaultMap() )
+ return false;
+
+ int nMatchCount = 0;
+ // static const int nMaxMatchCount = 1; // TODO: check more missing characters?
+ const sal_Int32 nStrLen = rMissingChars.getLength();
+ for( sal_Int32 nStrIdx = 0; nStrIdx < nStrLen; ++nStrIdx )
+ {
+ const sal_UCS4 uChar = rMissingChars.iterateCodePoints( &nStrIdx );
+ nMatchCount += pCharMap->HasChar( uChar );
+ break; // for now
+ }
+
+ const bool bHasMatches = (nMatchCount > 0);
+ return bHasMatches;
+}
+
+// find a fallback font for missing characters
+// TODO: should stylistic matches be searched and prefered?
+bool WinGlyphFallbackSubstititution::FindFontSubstitute( ImplFontSelectData& rFontSelData, rtl::OUString& rMissingChars ) const
+{
+ // guess a locale matching to the missing chars
+ com::sun::star::lang::Locale aLocale;
+
+ sal_Int32 nStrIdx = 0;
+ const sal_Int32 nStrLen = rMissingChars.getLength();
+ while( nStrIdx < nStrLen )
+ {
+ const sal_UCS4 uChar = rMissingChars.iterateCodePoints( &nStrIdx );
+ const LanguageType eLang = MapCharToLanguage( uChar );
+ if( eLang == LANGUAGE_DONTKNOW )
+ continue;
+ MsLangId::convertLanguageToLocale( eLang, aLocale );
+ break;
+ }
+
+ // fall back to default UI locale if the missing characters are inconclusive
+ if( nStrIdx >= nStrLen )
+ aLocale = Application::GetSettings().GetUILocale();
+
+ // first level fallback:
+ // try use the locale specific default fonts defined in VCL.xcu
+ const ImplDevFontList* pDevFontList = ImplGetSVData()->maGDIData.mpScreenFontList;
+ /*const*/ ImplDevFontListData* pDevFont = pDevFontList->ImplFindByLocale( aLocale );
+ if( pDevFont )
+ {
+ const ImplFontData* pFace = pDevFont->FindBestFontFace( rFontSelData );
+ if( HasMissingChars( pFace, rMissingChars ) )
+ {
+ rFontSelData.maSearchName = pDevFont->GetSearchName();
+ return true;
+ }
+ }
+
+ // are the missing characters symbols?
+ pDevFont = pDevFontList->ImplFindByAttributes( IMPL_FONT_ATTR_SYMBOL,
+ rFontSelData.meWeight, rFontSelData.meWidthType,
+ rFontSelData.meFamily, rFontSelData.meItalic, rFontSelData.maSearchName );
+ if( pDevFont )
+ {
+ const ImplFontData* pFace = pDevFont->FindBestFontFace( rFontSelData );
+ if( HasMissingChars( pFace, rMissingChars ) )
+ {
+ rFontSelData.maSearchName = pDevFont->GetSearchName();
+ return true;
+ }
+ }
+
+ // last level fallback, check each font type face one by one
+ const ImplGetDevFontList* pTestFontList = pDevFontList->GetDevFontList();
+ // limit the count of fonts to be checked to prevent hangs
+ static const int MAX_GFBFONT_COUNT = 600;
+ int nTestFontCount = pTestFontList->Count();
+ if( nTestFontCount > MAX_GFBFONT_COUNT )
+ nTestFontCount = MAX_GFBFONT_COUNT;
+
+ for( int i = 0; i < nTestFontCount; ++i )
+ {
+ const ImplFontData* pFace = pTestFontList->Get( i );
+ if( !HasMissingChars( pFace, rMissingChars ) )
+ continue;
+ rFontSelData.maSearchName = pFace->maName;
+ return true;
+ }
+
+ return false;
+}
+
// =======================================================================
struct ImplEnumInfo
@@ -903,6 +1208,8 @@ bool ImplWinFontData::IsGSUBstituted( sal_UCS4 cChar ) const
ImplFontCharMap* ImplWinFontData::GetImplFontCharMap() const
{
+ if( !mpUnicodeMap )
+ return NULL;
mpUnicodeMap->AddReference();
return mpUnicodeMap;
}
@@ -2237,6 +2544,10 @@ void WinSalGraphics::GetDevFontList( ImplDevFontList* pFontList )
bImplSalCourierScalable = aInfo.mbImplSalCourierScalable;
bImplSalCourierNew = aInfo.mbImplSalCourierNew;
}
+
+ // set glyph fallback hook
+ static WinGlyphFallbackSubstititution aSubstFallback( mhDC );
+ pFontList->SetFallbackHook( &aSubstFallback );
}
// ----------------------------------------------------------------------------
diff --git a/vcl/win/source/gdi/salnativewidgets-luna.cxx b/vcl/win/source/gdi/salnativewidgets-luna.cxx
index 1b7ed7dcfccb..d1f11433d532 100644
--- a/vcl/win/source/gdi/salnativewidgets-luna.cxx
+++ b/vcl/win/source/gdi/salnativewidgets-luna.cxx
@@ -295,6 +295,10 @@ BOOL WinSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nP
if( nPart == PART_TRACK_HORZ_AREA || nPart == PART_TRACK_VERT_AREA )
hTheme = getThemeHandle( mhWnd, L"Trackbar" );
break;
+ case CTRL_LISTNODE:
+ if( nPart == PART_ENTIRE_CONTROL )
+ hTheme = getThemeHandle( mhWnd, L"TreeView" );
+ break;
default:
hTheme = NULL;
break;
@@ -926,6 +930,27 @@ BOOL ImplDrawNativeControl( HDC hDC, HTHEME hTheme, RECT rc,
return ImplDrawTheme( hTheme, hDC, iPart, iState, aThumbRect, aCaption );
}
+ if( nType == CTRL_LISTNODE )
+ {
+ if( nPart != PART_ENTIRE_CONTROL )
+ return FALSE;
+
+ ButtonValue aButtonValue = aValue.getTristateVal();
+ iPart = TVP_GLYPH;
+ switch( aButtonValue )
+ {
+ case BUTTONVALUE_ON:
+ iState = GLPS_OPENED;
+ break;
+ case BUTTONVALUE_OFF:
+ iState = GLPS_CLOSED;
+ break;
+ default:
+ return FALSE;
+ }
+ return ImplDrawTheme( hTheme, hDC, iPart, iState, rc, aCaption );
+ }
+
return false;
}
@@ -1006,6 +1031,10 @@ BOOL WinSalGraphics::drawNativeControl( ControlType nType,
if( nPart == PART_ENTIRE_CONTROL )
hTheme = getThemeHandle( mhWnd, L"Progress");
break;
+ case CTRL_LISTNODE:
+ if( nPart == PART_ENTIRE_CONTROL )
+ hTheme = getThemeHandle( mhWnd, L"TreeView");
+ break;
case CTRL_SLIDER:
if( nPart == PART_TRACK_HORZ_AREA || nPart == PART_TRACK_VERT_AREA )
hTheme = getThemeHandle( mhWnd, L"Trackbar" );
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index 51960959d185..d64e95b0a61a 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -152,12 +152,12 @@ OOXMLFastContextHandler::OOXMLFastContextHandler
(OOXMLFastContextHandler * pContext)
: cppu::WeakImplHelper1<com::sun::star::xml::sax::XFastContextHandler>(),
mpParent(pContext),
+ mId(0),
mnToken(OOXML_FAST_TOKENS_END),
mpStream(NULL),
mnTableDepth(0),
mnInstanceNumber(mnInstanceCount),
mnRefCount(0),
- m_xContext(pContext->m_xContext),
mbFallback(false)
{
if (pContext != NULL)
diff --git a/writerperfect/source/wpdimp/WordPerfectImportFilter.cxx b/writerperfect/source/wpdimp/WordPerfectImportFilter.cxx
index a6cdba08616c..d4ee07e87c6d 100644
--- a/writerperfect/source/wpdimp/WordPerfectImportFilter.cxx
+++ b/writerperfect/source/wpdimp/WordPerfectImportFilter.cxx
@@ -46,9 +46,6 @@
#ifndef _ATTRLIST_HPP_
#include <xmloff/attrlist.hxx>
#endif
-#ifndef _XMLKYWD_HPP
-#include <xmloff/xmlkywd.hxx>
-#endif
#include <ucbhelper/content.hxx>
#include "filter/FilterInternal.hxx"
diff --git a/xmloff/inc/RDFaExportHelper.hxx b/xmloff/inc/RDFaExportHelper.hxx
index 9dd23e230e01..f8e991060eea 100644
--- a/xmloff/inc/RDFaExportHelper.hxx
+++ b/xmloff/inc/RDFaExportHelper.hxx
@@ -53,8 +53,6 @@ private:
::com::sun::star::uno::Reference<
::com::sun::star::rdf::XDocumentRepository> m_xRepository;
- ::rtl::OUString m_RDFsLabel;
-
typedef ::std::map< ::rtl::OUString, ::rtl::OUString >
BlankNodeMap_t;
diff --git a/xmloff/inc/RDFaImportHelper.hxx b/xmloff/inc/RDFaImportHelper.hxx
index 600a8a084cf2..030e1a840b9b 100644
--- a/xmloff/inc/RDFaImportHelper.hxx
+++ b/xmloff/inc/RDFaImportHelper.hxx
@@ -28,10 +28,12 @@
#ifndef RDFAIMPORTHELPER_HXX
#define RDFAIMPORTHELPER_HXX
-#include <com/sun/star/uno/Reference.h>
-
#include <vector>
+#include <boost/shared_ptr.hpp>
+
+#include <com/sun/star/uno/Reference.h>
+
namespace rtl { class OUString; }
@@ -46,6 +48,7 @@ class SvXMLImport;
namespace xmloff {
struct RDFaEntry;
+struct ParsedRDFaAttributes;
class SAL_DLLPRIVATE RDFaImportHelper
{
@@ -65,10 +68,23 @@ public:
~RDFaImportHelper();
- /** Add a RDFa statement; parameters are XML attribute values */
+ /** Parse RDFa attributes */
+ ::boost::shared_ptr<ParsedRDFaAttributes> ParseRDFa(
+ ::rtl::OUString const & i_rAbout,
+ ::rtl::OUString const & i_rProperty,
+ ::rtl::OUString const & i_rContent,
+ ::rtl::OUString const & i_rDatatype);
+
+ /** Add a RDFa statement; must have been parsed with ParseRDFa */
void AddRDFa(
::com::sun::star::uno::Reference< ::com::sun::star::rdf::XMetadatable>
- i_xObject,
+ const & i_xObject,
+ ::boost::shared_ptr<ParsedRDFaAttributes> & i_pRDFaAttributes);
+
+ /** Parse and add a RDFa statement; parameters are XML attribute values */
+ void ParseAndAddRDFa(
+ ::com::sun::star::uno::Reference< ::com::sun::star::rdf::XMetadatable>
+ const & i_xObject,
::rtl::OUString const & i_rAbout,
::rtl::OUString const & i_rProperty,
::rtl::OUString const & i_rContent,
diff --git a/xmloff/inc/xmlkywd.hxx b/xmloff/inc/xmlkywd.hxx
deleted file mode 100644
index bce52d875b52..000000000000
--- a/xmloff/inc/xmlkywd.hxx
+++ /dev/null
@@ -1,1998 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _XMLOFF_XMLKYWD_HXX
-#define _XMLOFF_XMLKYWD_HXX
-
-#include <tools/string.hxx>
-
-/*
- * THIS FILE IS DEPRECATED. IT IS SUPERSEDED BY XMLTOKEN.HXX.
- *
- * Please use xmltoken.hxx / xmltoken.cxx from now on.
- */
-
-
-/* if XML_DEFINE_KEYWORDS is defined the variables are
- defined rather than declared. So this file MUST be included
- WITHOUT this define.
-
- (Except the xmlkywd.cxx file that actually defines the
- variables which sets this define.)
- */
-
-#ifndef XML_DEFINE_KEYWORDS
-#define XML_CONSTASCII_ACTION( n, s ) extern sal_Char __FAR_DATA n[sizeof(s)]
-#else
-#define XML_CONSTASCII_ACTION( n, s ) sal_Char __FAR_DATA n[sizeof(s)] = s
-#endif
-
-// common XML
-XML_CONSTASCII_ACTION( sXML_CDATA, "CDATA" );
-XML_CONSTASCII_ACTION( sXML_WS, " " );
-XML_CONSTASCII_ACTION( sXML_xml, "xml" );
-XML_CONSTASCII_ACTION( sXML_xmlns, "xmlns" );
-XML_CONSTASCII_ACTION( sXML_xml_pi, "version=\"1.0\" encoding=\"UTF-8\"" );
-XML_CONSTASCII_ACTION( sXML_xml_doctype_prefix, "<!DOCTYPE " );
-XML_CONSTASCII_ACTION( sXML_xml_doctype_suffix, " PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\" \"office.dtd\">" );
-
-// namespace prefixes and names
-XML_CONSTASCII_ACTION( sXML_np_office, "office" );
-XML_CONSTASCII_ACTION( sXML_n_office, "http://openoffice.org/2000/office" );
-XML_CONSTASCII_ACTION( sXML_n_office_old, "http://sun.com/xmlns/staroffice/office" );
-XML_CONSTASCII_ACTION( sXML_np_meta, "meta" );
-XML_CONSTASCII_ACTION( sXML_n_meta, "http://openoffice.org/2000/meta" );
-XML_CONSTASCII_ACTION( sXML_n_meta_old, "http://sun.com/xmlns/staroffice/meta" );
-XML_CONSTASCII_ACTION( sXML_np_style, "style" );
-XML_CONSTASCII_ACTION( sXML_n_style, "http://openoffice.org/2000/style" );
-XML_CONSTASCII_ACTION( sXML_n_style_old, "http://sun.com/xmlns/staroffice/style" );
-XML_CONSTASCII_ACTION( sXML_np_number, "number" );
-XML_CONSTASCII_ACTION( sXML_n_number, "http://openoffice.org/2000/datastyle" );
-XML_CONSTASCII_ACTION( sXML_n_number_old, "http://sun.com/xmlns/staroffice/number" );
-XML_CONSTASCII_ACTION( sXML_np_text, "text" );
-XML_CONSTASCII_ACTION( sXML_n_text, "http://openoffice.org/2000/text" );
-XML_CONSTASCII_ACTION( sXML_n_text_old, "http://sun.com/xmlns/staroffice/text" );
-XML_CONSTASCII_ACTION( sXML_np_table, "table" );
-XML_CONSTASCII_ACTION( sXML_n_table, "http://openoffice.org/2000/table" );
-XML_CONSTASCII_ACTION( sXML_n_table_old, "http://sun.com/xmlns/staroffice/table" );
-XML_CONSTASCII_ACTION( sXML_np_draw, "draw" );
-XML_CONSTASCII_ACTION( sXML_n_draw, "http://openoffice.org/2000/drawing" );
-XML_CONSTASCII_ACTION( sXML_np_dr3d, "dr3d" );
-XML_CONSTASCII_ACTION( sXML_n_dr3d, "http://openoffice.org/2000/dr3d" );
-XML_CONSTASCII_ACTION( sXML_n_draw_old, "http://sun.com/xmlns/staroffice/draw" );
-XML_CONSTASCII_ACTION( sXML_np_presentation, "presentation" );
-XML_CONSTASCII_ACTION( sXML_n_presentation, "http://openoffice.org/2000/presentation" );
-XML_CONSTASCII_ACTION( sXML_n_presentation_old, "http://sun.com/xmlns/staroffice/presentation" );
-XML_CONSTASCII_ACTION( sXML_np_chart, "chart" );
-XML_CONSTASCII_ACTION( sXML_n_chart, "http://openoffice.org/2000/chart" );
-XML_CONSTASCII_ACTION( sXML_np_config, "config" );
-XML_CONSTASCII_ACTION( sXML_n_config, "http://openoffice.org/2001/config" );
-XML_CONSTASCII_ACTION( sXML_n_chart_old, "http://sun.com/xmlns/staroffice/chart" );
-XML_CONSTASCII_ACTION( sXML_np_fo, "fo" );
-XML_CONSTASCII_ACTION( sXML_n_fo_old, "http://www.w3.org/1999/XSL/Format/" );
-XML_CONSTASCII_ACTION( sXML_n_fo, "http://www.w3.org/1999/XSL/Format" );
-XML_CONSTASCII_ACTION( sXML_np_xlink, "xlink" );
-XML_CONSTASCII_ACTION( sXML_n_xlink, "http://www.w3.org/1999/xlink" );
-XML_CONSTASCII_ACTION( sXML_n_xlink_old, "http://www.w3.org/1999/xlink/namespace" );
-XML_CONSTASCII_ACTION( sXML_np_dc, "dc" );
-XML_CONSTASCII_ACTION( sXML_n_dc, "http://purl.org/dc/elements/1.1/" );
-XML_CONSTASCII_ACTION( sXML_np_svg, "svg" );
-XML_CONSTASCII_ACTION( sXML_n_svg, "http://www.w3.org/2000/svg" );
-XML_CONSTASCII_ACTION( sXML_namespace_form, "form" );
-XML_CONSTASCII_ACTION( sXML_url_form, "http://openoffice.org/2000/form" );
-XML_CONSTASCII_ACTION( sXML_namespace_script, "script" );
-XML_CONSTASCII_ACTION( sXML_url_script, "http://openoffice.org/2000/script" );
-
-XML_CONSTASCII_ACTION( sXML_np_block_list, "block-list");
-XML_CONSTASCII_ACTION( sXML_n_block_list, "http://openoffice.org/2001/block-list" );
-
-XML_CONSTASCII_ACTION( sXML_np_math, "math");
-XML_CONSTASCII_ACTION( sXML_n_math, "http://www.w3.org/1998/Math/MathML" );
-
-XML_CONSTASCII_ACTION( sXML_np_versions_list, "VL");
-XML_CONSTASCII_ACTION( sXML_n_versions_list, "http://openoffice.org/2001/versions-list" );
-
-// units
-XML_CONSTASCII_ACTION( sXML_unit_mm, "mm" );
-XML_CONSTASCII_ACTION( sXML_unit_m, "m" );
-XML_CONSTASCII_ACTION( sXML_unit_km, "km" );
-XML_CONSTASCII_ACTION( sXML_unit_cm, "cm" );
-XML_CONSTASCII_ACTION( sXML_unit_pt, "pt" );
-XML_CONSTASCII_ACTION( sXML_unit_pc, "pc" );
-XML_CONSTASCII_ACTION( sXML_unit_foot, "ft" );
-XML_CONSTASCII_ACTION( sXML_unit_miles, "mi" );
-XML_CONSTASCII_ACTION( sXML_unit_inch, "inch" );
-
-// any other
-XML_CONSTASCII_ACTION( sXML_1, "1" );
-XML_CONSTASCII_ACTION( sXML_10, "10" );
-XML_CONSTASCII_ACTION( sXML_2, "2" );
-XML_CONSTASCII_ACTION( sXML_3, "3" );
-XML_CONSTASCII_ACTION( sXML_4, "4" );
-XML_CONSTASCII_ACTION( sXML_5, "5" );
-XML_CONSTASCII_ACTION( sXML_6, "6" );
-XML_CONSTASCII_ACTION( sXML_7, "7" );
-XML_CONSTASCII_ACTION( sXML_8, "8" );
-XML_CONSTASCII_ACTION( sXML_9, "9" );
-XML_CONSTASCII_ACTION( sXML_A, "A" );
-XML_CONSTASCII_ACTION( sXML_I, "I" );
-XML_CONSTASCII_ACTION( sXML_IBM437, "IBM437" );
-XML_CONSTASCII_ACTION( sXML_IBM850, "IBM850" );
-XML_CONSTASCII_ACTION( sXML_IBM860, "IBM860" );
-XML_CONSTASCII_ACTION( sXML_IBM861, "IBM861" );
-XML_CONSTASCII_ACTION( sXML_IBM863, "IBM863" );
-XML_CONSTASCII_ACTION( sXML_IBM865, "IBM865" );
-XML_CONSTASCII_ACTION( sXML_ISO_8859_1, "ISO-8859-1" );
-XML_CONSTASCII_ACTION( sXML_OLE2, "ole2" );
-XML_CONSTASCII_ACTION( sXML__colon, ":" );
-XML_CONSTASCII_ACTION( sXML__empty, "" );
-XML_CONSTASCII_ACTION( sXML__unknown_, "_unknown_" );
-XML_CONSTASCII_ACTION( sXML_a, "a" );
-XML_CONSTASCII_ACTION( sXML_abbreviated_name, "abbreviated-name" );
-XML_CONSTASCII_ACTION( sXML_above, "above" );
-XML_CONSTASCII_ACTION( sXML_abs, "abs" );
-XML_CONSTASCII_ACTION( sXML_accent, "accent" );
-XML_CONSTASCII_ACTION( sXML_accentunder, "accentunder" );
-XML_CONSTASCII_ACTION( sXML_acceptance_state, "acceptance-state" );
-XML_CONSTASCII_ACTION( sXML_accepted, "accepted" );
-XML_CONSTASCII_ACTION( sXML_action, "action" );
-XML_CONSTASCII_ACTION( sXML_active, "active" );
-XML_CONSTASCII_ACTION( sXML_active_split_range, "active-split-range" );
-XML_CONSTASCII_ACTION( sXML_active_table, "active-table" );
-XML_CONSTASCII_ACTION( sXML_actuate, "actuate" );
-XML_CONSTASCII_ACTION( sXML_add_in, "add-in" );
-XML_CONSTASCII_ACTION( sXML_add_in_name, "add-in-name" );
-XML_CONSTASCII_ACTION( sXML_address, "address" );
-XML_CONSTASCII_ACTION( sXML_adjustment, "adjustment" );
-XML_CONSTASCII_ACTION( sXML_algorithm, "algorithm" );
-XML_CONSTASCII_ACTION( sXML_align, "align" );
-XML_CONSTASCII_ACTION( sXML_all, "all" );
-XML_CONSTASCII_ACTION( sXML_allow_empty_cell, "allow-empty-cell" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index, "alphabetical-index" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index_auto_mark_file, "alphabetical-index-auto-mark-file" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index_entry_template, "alphabetical-index-entry-template" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index_mark, "alphabetical-index-mark" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index_mark_end, "alphabetical-index-mark-end" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index_mark_start, "alphabetical-index-mark-start" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_index_source, "alphabetical-index-source" );
-XML_CONSTASCII_ACTION( sXML_alphabetical_separators, "alphabetical-separators" );
-XML_CONSTASCII_ACTION( sXML_alternate, "alternate" );
-XML_CONSTASCII_ACTION( sXML_am_pm, "am-pm" );
-XML_CONSTASCII_ACTION( sXML_ambient_color, "ambient-color");
-XML_CONSTASCII_ACTION( sXML_anchor_page_number, "anchor-page-number" );
-XML_CONSTASCII_ACTION( sXML_anchor_type, "anchor-type" );
-XML_CONSTASCII_ACTION( sXML_and, "and" );
-XML_CONSTASCII_ACTION( sXML_animation, "animation" );
-XML_CONSTASCII_ACTION( sXML_animation_direction, "animation-direction" );
-XML_CONSTASCII_ACTION( sXML_animation_start_inside, "animation-start-inside" );
-XML_CONSTASCII_ACTION( sXML_animation_stop_inside, "animation-stop-inside" );
-XML_CONSTASCII_ACTION( sXML_animation_repeat, "animation-repeat" );
-XML_CONSTASCII_ACTION( sXML_animation_delay, "animation-delay" );
-XML_CONSTASCII_ACTION( sXML_animation_steps, "animation-steps" );
-XML_CONSTASCII_ACTION( sXML_annotation, "annotation" );
-XML_CONSTASCII_ACTION( sXML_annotations, "annotations" );
-XML_CONSTASCII_ACTION( sXML_annote, "annote" );
-XML_CONSTASCII_ACTION( sXML_applet, "applet");
-XML_CONSTASCII_ACTION( sXML_applet_name, "applet-name");
-XML_CONSTASCII_ACTION( sXML_application_data, "application-data");
-XML_CONSTASCII_ACTION( sXML_application_xml, "application-xml");
-XML_CONSTASCII_ACTION( sXML_apply, "apply" );
-XML_CONSTASCII_ACTION( sXML_apply_style_name, "apply-style-name" );
-XML_CONSTASCII_ACTION( sXML_aqua, "aqua" );
-XML_CONSTASCII_ACTION( sXML_arccos, "arccos" );
-XML_CONSTASCII_ACTION( sXML_archive, "archive" );
-XML_CONSTASCII_ACTION( sXML_arcsin, "arcsin" );
-XML_CONSTASCII_ACTION( sXML_arctan, "arctan" );
-XML_CONSTASCII_ACTION( sXML_area, "area" );
-XML_CONSTASCII_ACTION( sXML_area_circle, "area-circle" );
-XML_CONSTASCII_ACTION( sXML_area_polygon, "area-polygon" );
-XML_CONSTASCII_ACTION( sXML_area_rectangle, "area-rectangle" );
-XML_CONSTASCII_ACTION( sXML_article, "article" );
-XML_CONSTASCII_ACTION( sXML_as_char, "as-char" );
-XML_CONSTASCII_ACTION( sXML_ascending, "ascending");
-XML_CONSTASCII_ACTION( sXML_attached_axis, "attached-axis" );
-XML_CONSTASCII_ACTION( sXML_attractive, "attractive");
-XML_CONSTASCII_ACTION( sXML_author, "author" );
-XML_CONSTASCII_ACTION( sXML_author_initials, "author-initials" );
-XML_CONSTASCII_ACTION( sXML_author_name, "author-name" );
-XML_CONSTASCII_ACTION( sXML_auto, "auto" );
-XML_CONSTASCII_ACTION( sXML_auto_grow_height, "auto-grow-height" );
-XML_CONSTASCII_ACTION( sXML_auto_grow_width, "auto-grow-width" );
-XML_CONSTASCII_ACTION( sXML_auto_reload, "auto-reload" );
-XML_CONSTASCII_ACTION( sXML_auto_text, "auto-text" );
-XML_CONSTASCII_ACTION( sXML_auto_text_events, "auto-text-events" );
-XML_CONSTASCII_ACTION( sXML_auto_text_group, "auto-text-group" );
-XML_CONSTASCII_ACTION( sXML_auto_text_indent, "auto-text-indent" );
-XML_CONSTASCII_ACTION( sXML_up, "up" );
-XML_CONSTASCII_ACTION( sXML_auto_update, "auto-update" );
-XML_CONSTASCII_ACTION( sXML_automatic, "automatic");
-XML_CONSTASCII_ACTION( sXML_automatic_find_labels, "automatic-find-labels" );
-XML_CONSTASCII_ACTION( sXML_automatic_order, "automatic-order" );
-XML_CONSTASCII_ACTION( sXML_automatic_styles, "automatic-styles" );
-XML_CONSTASCII_ACTION( sXML_automatic_update, "automatic-update" );
-XML_CONSTASCII_ACTION( sXML_average, "average" );
-XML_CONSTASCII_ACTION( sXML_axis, "axis" );
-XML_CONSTASCII_ACTION( sXML_back_scale, "back-scale" );
-XML_CONSTASCII_ACTION( sXML_backface_culling, "backface-culling" );
-XML_CONSTASCII_ACTION( sXML_background, "background" );
-XML_CONSTASCII_ACTION( sXML_background_color, "background-color" );
-XML_CONSTASCII_ACTION( sXML_background_image, "background-image" );
-XML_CONSTASCII_ACTION( sXML_background_no_repeat, "no-repeat" );
-XML_CONSTASCII_ACTION( sXML_background_objects_visible, "background-objects-visible" );
-XML_CONSTASCII_ACTION( sXML_background_repeat, "repeat" );
-XML_CONSTASCII_ACTION( sXML_background_stretch, "stretch" );
-XML_CONSTASCII_ACTION( sXML_background_visible, "background-visible" );
-XML_CONSTASCII_ACTION( sXML_bar, "bar" );
-XML_CONSTASCII_ACTION( sXML_base64Binary, "base64Binary");
-XML_CONSTASCII_ACTION( sXML_base_cell_address, "base-cell-address");
-XML_CONSTASCII_ACTION( sXML_baseline, "baseline" );
-XML_CONSTASCII_ACTION( sXML_before_date_time, "before-date-time" );
-XML_CONSTASCII_ACTION( sXML_below , "below" );
-XML_CONSTASCII_ACTION( sXML_between_date_times, "between-date-times" );
-XML_CONSTASCII_ACTION( sXML_bevel , "bevel" );
-XML_CONSTASCII_ACTION( sXML_bibiliographic_type, "bibiliographic-type" );
-XML_CONSTASCII_ACTION( sXML_bibliography, "bibliography" );
-XML_CONSTASCII_ACTION( sXML_bibliography_configuration, "bibliography-configuration" );
-XML_CONSTASCII_ACTION( sXML_bibliography_data_field, "bibliography-data-field" );
-XML_CONSTASCII_ACTION( sXML_bibliography_entry_template, "bibliography-entry-template" );
-XML_CONSTASCII_ACTION( sXML_bibliography_mark, "bibliography-mark" );
-XML_CONSTASCII_ACTION( sXML_bibliography_source, "bibliography-source" );
-XML_CONSTASCII_ACTION( sXML_bibliography_type, "bibliography-type" );
-XML_CONSTASCII_ACTION( sXML_bind_styles_to_content, "bind-styles-to-content");
-XML_CONSTASCII_ACTION( sXML_bitmap , "bitmap" );
-XML_CONSTASCII_ACTION( sXML_black, "black" );
-XML_CONSTASCII_ACTION( sXML_blend, "blend" );
-XML_CONSTASCII_ACTION( sXML_blinking, "blinking" );
-XML_CONSTASCII_ACTION( sXML_block, "block" );
-XML_CONSTASCII_ACTION( sXML_block_list, "block-list" );
-XML_CONSTASCII_ACTION( sXML_blue , "blue" );
-XML_CONSTASCII_ACTION( sXML_body, "body" );
-XML_CONSTASCII_ACTION( sXML_bold, "bold" );
-XML_CONSTASCII_ACTION( sXML_book, "book" );
-XML_CONSTASCII_ACTION( sXML_booklet, "booklet" );
-XML_CONSTASCII_ACTION( sXML_bookmark, "bookmark" );
-XML_CONSTASCII_ACTION( sXML_bookmark_end, "bookmark-end" );
-XML_CONSTASCII_ACTION( sXML_bookmark_ref, "bookmark-ref" );
-XML_CONSTASCII_ACTION( sXML_bookmark_start, "bookmark-start" );
-XML_CONSTASCII_ACTION( sXML_booktitle, "booktitle" );
-XML_CONSTASCII_ACTION( sXML_boolean, "boolean");
-XML_CONSTASCII_ACTION( sXML_boolean_style, "boolean-style" );
-XML_CONSTASCII_ACTION( sXML_boolean_value, "boolean-value");
-XML_CONSTASCII_ACTION( sXML_border, "border" );
-XML_CONSTASCII_ACTION( sXML_border_bottom, "border-bottom" );
-XML_CONSTASCII_ACTION( sXML_border_color, "border-color" );
-XML_CONSTASCII_ACTION( sXML_border_left, "border-left" );
-XML_CONSTASCII_ACTION( sXML_border_line_width, "border-line-width" );
-XML_CONSTASCII_ACTION( sXML_border_line_width_bottom, "border-line-width-bottom" );
-XML_CONSTASCII_ACTION( sXML_border_line_width_left, "border-line-width-left" );
-XML_CONSTASCII_ACTION( sXML_border_line_width_right, "border-line-width-right" );
-XML_CONSTASCII_ACTION( sXML_border_line_width_top, "border-line-width-top" );
-XML_CONSTASCII_ACTION( sXML_border_right, "border-right" );
-XML_CONSTASCII_ACTION( sXML_border_top, "border-top" );
-XML_CONSTASCII_ACTION( sXML_both, "both");
-XML_CONSTASCII_ACTION( sXML_bottom, "bottom" );
-XML_CONSTASCII_ACTION( sXML_bottom_percent, "bottom percent");
-XML_CONSTASCII_ACTION( sXML_bottom_values, "bottom values");
-XML_CONSTASCII_ACTION( sXML_break_after, "break-after" );
-XML_CONSTASCII_ACTION( sXML_break_before, "break-before" );
-XML_CONSTASCII_ACTION( sXML_break_inside, "break-inside" );
-XML_CONSTASCII_ACTION( sXML_bubble, "bubble" );
-XML_CONSTASCII_ACTION( sXML_bullet_char, "bullet-char" );
-XML_CONSTASCII_ACTION( sXML_bullet_relative_size, "bullet-relative-size" );
-XML_CONSTASCII_ACTION( sXML_buttons, "buttons");
-XML_CONSTASCII_ACTION( sXML_bvar, "bvar");
-XML_CONSTASCII_ACTION( sXML_c, "c" );
-XML_CONSTASCII_ACTION( sXML_cm, "cm" );
-XML_CONSTASCII_ACTION( sXML_calculation_settings, "calculation-settings" );
-XML_CONSTASCII_ACTION( sXML_calendar, "calendar" );
-XML_CONSTASCII_ACTION( sXML_capitalize_entries, "capitalize-entries" );
-XML_CONSTASCII_ACTION( sXML_caption, "caption" );
-XML_CONSTASCII_ACTION( sXML_caption_point_x, "caption-point-x" );
-XML_CONSTASCII_ACTION( sXML_caption_point_y, "caption-point-y" );
-XML_CONSTASCII_ACTION( sXML_caption_sequence_format, "caption-sequence-format" );
-XML_CONSTASCII_ACTION( sXML_caption_sequence_name, "caption-sequence-name" );
-XML_CONSTASCII_ACTION( sXML_case_sensitive, "case-sensitive");
-XML_CONSTASCII_ACTION( sXML_casemap_capitalize, "capitalize" );
-XML_CONSTASCII_ACTION( sXML_casemap_lowercase, "lowercase" );
-XML_CONSTASCII_ACTION( sXML_casemap_normal, "normal" );
-XML_CONSTASCII_ACTION( sXML_casemap_small_caps, "small-caps" );
-XML_CONSTASCII_ACTION( sXML_casemap_uppercase, "uppercase" );
-XML_CONSTASCII_ACTION( sXML_categories, "categories" );
-XML_CONSTASCII_ACTION( sXML_category, "category" );
-XML_CONSTASCII_ACTION( sXML_category_and_value, "category-and-value" );
-XML_CONSTASCII_ACTION( sXML_cell_address, "cell-address");
-XML_CONSTASCII_ACTION( sXML_cell_content_change, "cell-content-change");
-XML_CONSTASCII_ACTION( sXML_cell_content_deletion, "cell-content-deletion");
-XML_CONSTASCII_ACTION( sXML_cell_count, "cell-count");
-XML_CONSTASCII_ACTION( sXML_cell_protect, "cell-protect");
-XML_CONSTASCII_ACTION( sXML_cell_range_address, "cell-range-address");
-XML_CONSTASCII_ACTION( sXML_cell_range_address_list, "cell-range-address-list");
-XML_CONSTASCII_ACTION( sXML_cell_range_source, "cell-range-source");
-XML_CONSTASCII_ACTION( sXML_center, "center" );
-XML_CONSTASCII_ACTION( sXML_chain_next_name, "chain-next-name" );
-XML_CONSTASCII_ACTION( sXML_change, "change" );
-XML_CONSTASCII_ACTION( sXML_change_deletion, "change-deletion" );
-XML_CONSTASCII_ACTION( sXML_change_end, "change-end" );
-XML_CONSTASCII_ACTION( sXML_change_id, "change-id" );
-XML_CONSTASCII_ACTION( sXML_change_info, "change-info" );
-XML_CONSTASCII_ACTION( sXML_change_start, "change-start" );
-XML_CONSTASCII_ACTION( sXML_change_track_table_cell, "change-track-table-cell" );
-XML_CONSTASCII_ACTION( sXML_change_view_conditions, "change-view-conditions" );
-XML_CONSTASCII_ACTION( sXML_change_view_settings, "change-view-settings" );
-XML_CONSTASCII_ACTION( sXML_changed_region, "changed-region" );
-XML_CONSTASCII_ACTION( sXML_chapter, "chapter");
-XML_CONSTASCII_ACTION( sXML_char, "char" );
-XML_CONSTASCII_ACTION( sXML_character_count, "character-count" );
-XML_CONSTASCII_ACTION( sXML_chart, "chart" );
-XML_CONSTASCII_ACTION( sXML_charts, "charts" );
-XML_CONSTASCII_ACTION( sXML_chg_author, "chg-author" );
-XML_CONSTASCII_ACTION( sXML_chg_comment, "chg-comment" );
-XML_CONSTASCII_ACTION( sXML_chg_date_time, "chg-date-time" );
-XML_CONSTASCII_ACTION( sXML_ci, "ci" );
-XML_CONSTASCII_ACTION( sXML_circle, "circle" );
-XML_CONSTASCII_ACTION( sXML_citation_body_style_name, "citation-body-style-name" );
-XML_CONSTASCII_ACTION( sXML_citation_style_name, "citation-style-name" );
-XML_CONSTASCII_ACTION( sXML_class, "class" );
-XML_CONSTASCII_ACTION( sXML_class_id, "class-id" );
-XML_CONSTASCII_ACTION( sXML_clip, "clip" );
-XML_CONSTASCII_ACTION( sXML_clockwise, "clockwise" );
-XML_CONSTASCII_ACTION( sXML_close, "close" );
-XML_CONSTASCII_ACTION( sXML_close_horizontal, "close-horizontal" );
-XML_CONSTASCII_ACTION( sXML_close_vertical, "close-vertical" );
-XML_CONSTASCII_ACTION( sXML_cn, "cn" );
-XML_CONSTASCII_ACTION( sXML_code, "code" );
-XML_CONSTASCII_ACTION( sXML_codebase, "codebase" );
-XML_CONSTASCII_ACTION( sXML_collapse, "collapse" );
-XML_CONSTASCII_ACTION( sXML_color, "color" );
-XML_CONSTASCII_ACTION( sXML_color_inversion , "color-inversion" );
-XML_CONSTASCII_ACTION( sXML_color_mode , "color-mode" );
-XML_CONSTASCII_ACTION( sXML_column, "column" );
-XML_CONSTASCII_ACTION( sXML_column_count, "column-count" );
-XML_CONSTASCII_ACTION( sXML_column_gap, "column-gap" );
-XML_CONSTASCII_ACTION( sXML_column_name, "column-name" );
-XML_CONSTASCII_ACTION( sXML_column_sep, "column-sep" );
-XML_CONSTASCII_ACTION( sXML_column_width, "column-width" );
-XML_CONSTASCII_ACTION( sXML_columns, "columns" );
-XML_CONSTASCII_ACTION( sXML_columnsplit_auto, "auto" );
-XML_CONSTASCII_ACTION( sXML_columnsplit_avoid, "avoid" );
-XML_CONSTASCII_ACTION( sXML_combine_entries, "combine-entries" );
-XML_CONSTASCII_ACTION( sXML_combine_entries_with_dash, "combine-entries-with-dash" );
-XML_CONSTASCII_ACTION( sXML_combine_entries_with_pp, "combine-entries-with-pp" );
-XML_CONSTASCII_ACTION( sXML_comma_separated, "comma-separated" );
-XML_CONSTASCII_ACTION( sXML_command, "command" );
-XML_CONSTASCII_ACTION( sXML_comment, "comment" );
-XML_CONSTASCII_ACTION( sXML_compose, "compose" );
-XML_CONSTASCII_ACTION( sXML_cond_style_name, "cond-style-name" );
-XML_CONSTASCII_ACTION( sXML_condition, "condition" );
-XML_CONSTASCII_ACTION( sXML_condition_source, "condition-source");
-XML_CONSTASCII_ACTION( sXML_condition_source_range_address, "condition-source-range-address");
-XML_CONSTASCII_ACTION( sXML_conditional_text, "conditional-text" );
-XML_CONSTASCII_ACTION( sXML_cone, "cone" );
-XML_CONSTASCII_ACTION( sXML_conference, "conference" );
-XML_CONSTASCII_ACTION( sXML_config_item, "config-item" );
-XML_CONSTASCII_ACTION( sXML_config_item_map_indexed, "config-item-map-indexed" );
-XML_CONSTASCII_ACTION( sXML_config_item_map_named, "config-item-map-named" );
-XML_CONSTASCII_ACTION( sXML_config_item_map_entry, "config-item-map-entry" );
-XML_CONSTASCII_ACTION( sXML_config_item_set, "config-item-set" );
-XML_CONSTASCII_ACTION( sXML_configuration_settings, "configuration-settings" );
-XML_CONSTASCII_ACTION( sXML_conjugate, "conjugate" );
-XML_CONSTASCII_ACTION( sXML_connect_bars, "connect-bars" );
-XML_CONSTASCII_ACTION( sXML_connection_name, "connection-name" );
-XML_CONSTASCII_ACTION( sXML_connector, "connector" );
-XML_CONSTASCII_ACTION( sXML_consecutive_numbering, "consecutive-numbering" );
-XML_CONSTASCII_ACTION( sXML_consolidation, "consolidation" );
-XML_CONSTASCII_ACTION( sXML_constant, "constant" );
-XML_CONSTASCII_ACTION( sXML_contains_error, "contains-error");
-XML_CONSTASCII_ACTION( sXML_contains_header, "contains-header");
-XML_CONSTASCII_ACTION( sXML_content, "content" );
-XML_CONSTASCII_ACTION( sXML_content_validation, "content-validation");
-XML_CONSTASCII_ACTION( sXML_content_validation_name, "validation-name");
-XML_CONSTASCII_ACTION( sXML_content_validations, "content-validations");
-XML_CONSTASCII_ACTION( sXML_continue, "continue" );
-XML_CONSTASCII_ACTION( sXML_continue_numbering, "continue-numbering" );
-XML_CONSTASCII_ACTION( sXML_contour_path, "contour-path" );
-XML_CONSTASCII_ACTION( sXML_contour_polygon, "contour-polygon" );
-XML_CONSTASCII_ACTION( sXML_contrast , "contrast" );
-XML_CONSTASCII_ACTION( sXML_control, "control" );
-XML_CONSTASCII_ACTION( sXML_conversion_mode, "conversion-mode" );
-XML_CONSTASCII_ACTION( sXML_copy_back, "copy-back" );
-XML_CONSTASCII_ACTION( sXML_copy_formulas, "copy-formulas" );
-XML_CONSTASCII_ACTION( sXML_copy_outline_levels, "copy-outline-levels" );
-XML_CONSTASCII_ACTION( sXML_copy_results_only, "copy-results-only" );
-XML_CONSTASCII_ACTION( sXML_copy_styles, "copy-styles" );
-XML_CONSTASCII_ACTION( sXML_corner_radius , "corner-radius" );
-XML_CONSTASCII_ACTION( sXML_correct, "correct");
-XML_CONSTASCII_ACTION( sXML_cos, "cos" );
-XML_CONSTASCII_ACTION( sXML_cosh, "cosh" );
-XML_CONSTASCII_ACTION( sXML_cot, "cot" );
-XML_CONSTASCII_ACTION( sXML_coth, "coth" );
-XML_CONSTASCII_ACTION( sXML_count, "count" );
-XML_CONSTASCII_ACTION( sXML_count_empty_lines, "count-empty-lines" );
-XML_CONSTASCII_ACTION( sXML_count_in_floating_frames, "count-in-floating-frames" );
-XML_CONSTASCII_ACTION( sXML_counterclockwise, "counterclockwise" );
-XML_CONSTASCII_ACTION( sXML_countnums, "countnums" );
-XML_CONSTASCII_ACTION( sXML_country, "country" );
-XML_CONSTASCII_ACTION( sXML_country_asian, "country-asian" );
-XML_CONSTASCII_ACTION( sXML_country_complex, "country-complex" );
-XML_CONSTASCII_ACTION( sXML_covered_table_cell, "covered-table-cell" );
-XML_CONSTASCII_ACTION( sXML_create_date, "create-date" );
-XML_CONSTASCII_ACTION( sXML_create_date_string, "create-date-string" );
-XML_CONSTASCII_ACTION( sXML_creation_date, "creation-date" );
-XML_CONSTASCII_ACTION( sXML_creation_time, "creation-time" );
-XML_CONSTASCII_ACTION( sXML_creator, "creator" );
-XML_CONSTASCII_ACTION( sXML_crossedout_cross, "X" );
-XML_CONSTASCII_ACTION( sXML_crossedout_double, "double-line" );
-XML_CONSTASCII_ACTION( sXML_crossedout_none, "none" );
-XML_CONSTASCII_ACTION( sXML_crossedout_single, "single-line" );
-XML_CONSTASCII_ACTION( sXML_crossedout_slash, "slash" );
-XML_CONSTASCII_ACTION( sXML_crossedout_thick, "thick-line" );
-XML_CONSTASCII_ACTION( sXML_csc, "csc" );
-XML_CONSTASCII_ACTION( sXML_csch, "csch" );
-XML_CONSTASCII_ACTION( sXML_cube, "cube" );
-XML_CONSTASCII_ACTION( sXML_cuboid, "cuboid" );
-XML_CONSTASCII_ACTION( sXML_currency, "currency");
-XML_CONSTASCII_ACTION( sXML_currency_style, "currency-style" );
-XML_CONSTASCII_ACTION( sXML_currency_symbol, "currency-symbol" );
-XML_CONSTASCII_ACTION( sXML_current, "current" );
-XML_CONSTASCII_ACTION( sXML_current_value, "current-value" );
-XML_CONSTASCII_ACTION( sXML_cursor_position, "cursor-position" );
-XML_CONSTASCII_ACTION( sXML_cursor_position_x, "cursor-position-x" );
-XML_CONSTASCII_ACTION( sXML_cursor_position_y, "cursor-position-y" );
-XML_CONSTASCII_ACTION( sXML_custom1, "custom1" );
-XML_CONSTASCII_ACTION( sXML_custom2, "custom2" );
-XML_CONSTASCII_ACTION( sXML_custom3, "custom3" );
-XML_CONSTASCII_ACTION( sXML_custom4, "custom4" );
-XML_CONSTASCII_ACTION( sXML_custom5, "custom5" );
-XML_CONSTASCII_ACTION( sXML_cut_offs, "cut_offs" );
-XML_CONSTASCII_ACTION( sXML_cx, "cx" );
-XML_CONSTASCII_ACTION( sXML_cy, "cy" );
-XML_CONSTASCII_ACTION( sXML_cylinder, "cylinder" );
-XML_CONSTASCII_ACTION( sXML_d, "d" );
-XML_CONSTASCII_ACTION( sXML_dash, "dash" );
-XML_CONSTASCII_ACTION( sXML_dashed, "dashed" );
-XML_CONSTASCII_ACTION( sXML_data, "data");
-XML_CONSTASCII_ACTION( sXML_data_cell_range_address, "data-cell-range-address" );
-XML_CONSTASCII_ACTION( sXML_data_label_number, "data-label-number" );
-XML_CONSTASCII_ACTION( sXML_data_label_symbol, "data-label-symbol" );
-XML_CONSTASCII_ACTION( sXML_data_label_text, "data-label-text" );
-XML_CONSTASCII_ACTION( sXML_data_pilot_field, "data-pilot-field");
-XML_CONSTASCII_ACTION( sXML_data_pilot_level, "data-pilot-level");
-XML_CONSTASCII_ACTION( sXML_data_pilot_member, "data-pilot-member");
-XML_CONSTASCII_ACTION( sXML_data_pilot_members, "data-pilot-members");
-XML_CONSTASCII_ACTION( sXML_data_pilot_subtotal, "data-pilot-subtotal");
-XML_CONSTASCII_ACTION( sXML_data_pilot_subtotals, "data-pilot-subtotals");
-XML_CONSTASCII_ACTION( sXML_data_pilot_table, "data-pilot-table");
-XML_CONSTASCII_ACTION( sXML_data_pilot_tables, "data-pilot-tables");
-XML_CONSTASCII_ACTION( sXML_data_point, "data-point" );
-XML_CONSTASCII_ACTION( sXML_data_style, "data-style" );
-XML_CONSTASCII_ACTION( sXML_data_style_name, "data-style-name" );
-XML_CONSTASCII_ACTION( sXML_data_type, "data-type");
-XML_CONSTASCII_ACTION( sXML_database_display, "database-display" );
-XML_CONSTASCII_ACTION( sXML_database_name, "database-name");
-XML_CONSTASCII_ACTION( sXML_database_next, "database-next" );
-XML_CONSTASCII_ACTION( sXML_database_range, "database-range");
-XML_CONSTASCII_ACTION( sXML_database_ranges, "database-ranges");
-XML_CONSTASCII_ACTION( sXML_database_row_number, "database-row-number" );
-XML_CONSTASCII_ACTION( sXML_database_select, "database-select" );
-XML_CONSTASCII_ACTION( sXML_database_source_query, "database-source-query");
-XML_CONSTASCII_ACTION( sXML_database_source_sql, "database-source-sql");
-XML_CONSTASCII_ACTION( sXML_database_source_table, "database-source-table");
-XML_CONSTASCII_ACTION( sXML_date, "date" );
-XML_CONSTASCII_ACTION( sXML_datetime, "datetime" );
-XML_CONSTASCII_ACTION( sXML_date_adjust, "date-adjust" );
-XML_CONSTASCII_ACTION( sXML_date_style, "date-style" );
-XML_CONSTASCII_ACTION( sXML_date_time, "date-time" );
-XML_CONSTASCII_ACTION( sXML_date_value, "date-value");
-XML_CONSTASCII_ACTION( sXML_day, "day" );
-XML_CONSTASCII_ACTION( sXML_day_of_week, "day-of-week" );
-XML_CONSTASCII_ACTION( sXML_dde_application, "dde-application" );
-XML_CONSTASCII_ACTION( sXML_dde_connection, "dde-connection" );
-XML_CONSTASCII_ACTION( sXML_dde_connection_decl, "dde-connection-decl" );
-XML_CONSTASCII_ACTION( sXML_dde_connection_decls, "dde-connection-decls" );
-XML_CONSTASCII_ACTION( sXML_dde_item, "dde-item" );
-XML_CONSTASCII_ACTION( sXML_dde_link, "dde-link" );
-XML_CONSTASCII_ACTION( sXML_dde_links, "dde-links" );
-XML_CONSTASCII_ACTION( sXML_dde_source, "dde-source" );
-XML_CONSTASCII_ACTION( sXML_dde_topic, "dde-topic" );
-XML_CONSTASCII_ACTION( sXML_decimal_places, "decimal-places" );
-XML_CONSTASCII_ACTION( sXML_decimal_replacement, "decimal-replacement" );
-XML_CONSTASCII_ACTION( sXML_declare, "declare" );
-XML_CONSTASCII_ACTION( sXML_decorate_words_only, "decorate-words-only" );
-XML_CONSTASCII_ACTION( sXML_decorative, "decorative" );
-XML_CONSTASCII_ACTION( sXML_deep, "deep" );
-XML_CONSTASCII_ACTION( sXML_default, "default" );
-XML_CONSTASCII_ACTION( sXML_default_cell_style_name, "default-cell-style-name" );
-XML_CONSTASCII_ACTION( sXML_default_style, "default-style" );
-XML_CONSTASCII_ACTION( sXML_default_style_name, "default-style-name" );
-XML_CONSTASCII_ACTION( sXML_degree, "degree" );
-XML_CONSTASCII_ACTION( sXML_delay, "delay" );
-XML_CONSTASCII_ACTION( sXML_deletion, "deletion" );
-XML_CONSTASCII_ACTION( sXML_deletions, "deletions" );
-XML_CONSTASCII_ACTION( sXML_depth, "depth" );
-XML_CONSTASCII_ACTION( sXML_desc, "desc" );
-XML_CONSTASCII_ACTION( sXML_descending, "descending");
-XML_CONSTASCII_ACTION( sXML_description, "description" );
-XML_CONSTASCII_ACTION( sXML_detective, "detective" );
-XML_CONSTASCII_ACTION( sXML_determinant, "determinant" );
-XML_CONSTASCII_ACTION( sXML_diff, "diff");
-XML_CONSTASCII_ACTION( sXML_diffuse_color, "diffuse-color" );
-XML_CONSTASCII_ACTION( sXML_dependences, "dependences");
-XML_CONSTASCII_ACTION( sXML_dependence, "dependence");
-XML_CONSTASCII_ACTION( sXML_direction, "direction");
-XML_CONSTASCII_ACTION( sXML_disabled, "disabled" );
-XML_CONSTASCII_ACTION( sXML_disc, "disc" );
-XML_CONSTASCII_ACTION( sXML_display, "display" );
-XML_CONSTASCII_ACTION( sXML_display_border, "display-border");
-XML_CONSTASCII_ACTION( sXML_display_details, "display-details");
-XML_CONSTASCII_ACTION( sXML_display_duplicates, "display-duplicates");
-XML_CONSTASCII_ACTION( sXML_display_empty, "display-empty");
-XML_CONSTASCII_ACTION( sXML_display_filter_buttons, "display-filter-buttons");
-XML_CONSTASCII_ACTION( sXML_display_formula, "display-formula" );
-XML_CONSTASCII_ACTION( sXML_display_label, "display-label" );
-XML_CONSTASCII_ACTION( sXML_display_levels, "display-levels" );
-XML_CONSTASCII_ACTION( sXML_display_name, "display-name" );
-XML_CONSTASCII_ACTION( sXML_display_outline_level, "display-outline-level" );
-XML_CONSTASCII_ACTION( sXML_dissolve, "dissolve" );
-XML_CONSTASCII_ACTION( sXML_distance, "distance" );
-XML_CONSTASCII_ACTION( sXML_distribute_letter, "distribute-letter" );
-XML_CONSTASCII_ACTION( sXML_distribute_space, "distribute-space" );
-XML_CONSTASCII_ACTION( sXML_divide, "divide" );
-XML_CONSTASCII_ACTION( sXML_document, "document" );
-XML_CONSTASCII_ACTION( sXML_document_content, "document-content" );
-XML_CONSTASCII_ACTION( sXML_document_meta, "document-meta" );
-XML_CONSTASCII_ACTION( sXML_document_settings, "document-settings" );
-XML_CONSTASCII_ACTION( sXML_document_styles, "document-styles" );
-XML_CONSTASCII_ACTION( sXML_document_statistic, "document-statistic" );
-XML_CONSTASCII_ACTION( sXML_domain, "domain" );
-XML_CONSTASCII_ACTION( sXML_dot, "dot" );
-XML_CONSTASCII_ACTION( sXML_dotted, "dotted" );
-XML_CONSTASCII_ACTION( sXML_double, "double" );
-XML_CONSTASCII_ACTION( sXML_double_sided, "double-sided" );
-XML_CONSTASCII_ACTION( sXML_down, "down" );
-XML_CONSTASCII_ACTION( sXML_draft, "draft");
-XML_CONSTASCII_ACTION( sXML_draw, "draw" );
-XML_CONSTASCII_ACTION( sXML_draw_aspect, "ole-draw-aspect" );
-XML_CONSTASCII_ACTION( sXML_drawing, "drawing" );
-XML_CONSTASCII_ACTION( sXML_drawings, "drawings" );
-XML_CONSTASCII_ACTION( sXML_drawpool , "drawpool" );
-XML_CONSTASCII_ACTION( sXML_drop_cap, "drop-cap" );
-XML_CONSTASCII_ACTION( sXML_dynamic, "dynamic" );
-XML_CONSTASCII_ACTION( sXML_edge_rounding, "edge-rounding" );
-XML_CONSTASCII_ACTION( sXML_editable, "editable" );
-XML_CONSTASCII_ACTION( sXML_editing_cycles, "editing-cycles" );
-XML_CONSTASCII_ACTION( sXML_editing_duration, "editing-duration" );
-XML_CONSTASCII_ACTION( sXML_edition, "edition" );
-XML_CONSTASCII_ACTION( sXML_editor, "editor" );
-XML_CONSTASCII_ACTION( sXML_ellipse , "ellipse" );
-XML_CONSTASCII_ACTION( sXML_email, "email" );
-XML_CONSTASCII_ACTION( sXML_embed, "embed" );
-XML_CONSTASCII_ACTION( sXML_embedded_visible_area, "embedded-visible-area" );
-XML_CONSTASCII_ACTION( sXML_embossed, "embossed" );
-XML_CONSTASCII_ACTION( sXML_emissive_color, "emissive-color" );
-XML_CONSTASCII_ACTION( sXML_empty, "empty");
-XML_CONSTASCII_ACTION( sXML_enabled, "enabled" );
-XML_CONSTASCII_ACTION( sXML_encoding, "encoding" );
-XML_CONSTASCII_ACTION( sXML_end, "end" );
-XML_CONSTASCII_ACTION( sXML_end_angle, "end-angle" );
-XML_CONSTASCII_ACTION( sXML_end_cell_address, "end-cell-address" );
-XML_CONSTASCII_ACTION( sXML_end_color, "end-color" );
-XML_CONSTASCII_ACTION( sXML_end_column, "end-column" );
-XML_CONSTASCII_ACTION( sXML_end_intensity, "end-intensity" );
-XML_CONSTASCII_ACTION( sXML_end_position, "end-position" );
-XML_CONSTASCII_ACTION( sXML_end_row, "end-row" );
-XML_CONSTASCII_ACTION( sXML_end_table, "end-table" );
-XML_CONSTASCII_ACTION( sXML_end_x, "end-x" );
-XML_CONSTASCII_ACTION( sXML_end_y, "end-y" );
-XML_CONSTASCII_ACTION( sXML_endless, "endless" );
-XML_CONSTASCII_ACTION( sXML_endnote, "endnote" );
-XML_CONSTASCII_ACTION( sXML_endnote_body, "endnote-body" );
-XML_CONSTASCII_ACTION( sXML_endnote_citation, "endnote-citation" );
-XML_CONSTASCII_ACTION( sXML_endnote_ref, "endnote-ref" );
-XML_CONSTASCII_ACTION( sXML_endnotes_configuration, "endnotes-configuration");
-XML_CONSTASCII_ACTION( sXML_engraved, "engraved" );
-XML_CONSTASCII_ACTION( sXML_eq, "eq");
-XML_CONSTASCII_ACTION( sXML_equal_author, "equal-author");
-XML_CONSTASCII_ACTION( sXML_equal_comment, "equal-comment");
-XML_CONSTASCII_ACTION( sXML_equal_date, "equal-date");
-XML_CONSTASCII_ACTION( sXML_era, "era" );
-XML_CONSTASCII_ACTION( sXML_ergo_sum, "ergo-sum" );
-XML_CONSTASCII_ACTION( sXML_error_category, "error-category" );
-XML_CONSTASCII_ACTION( sXML_error_lower_indicator, "error-lower-indicator" );
-XML_CONSTASCII_ACTION( sXML_error_lower_limit, "error-lower-limit" );
-XML_CONSTASCII_ACTION( sXML_error_macro, "error-macro" );
-XML_CONSTASCII_ACTION( sXML_error_margin, "error-margin" );
-XML_CONSTASCII_ACTION( sXML_error_message, "error-message" );
-XML_CONSTASCII_ACTION( sXML_error_percentage, "error-percentage" );
-XML_CONSTASCII_ACTION( sXML_error_upper_indicator, "error-upper-indicator" );
-XML_CONSTASCII_ACTION( sXML_error_upper_limit, "error-upper-limit" );
-XML_CONSTASCII_ACTION( sXML_escapement_sub, "sub" );
-XML_CONSTASCII_ACTION( sXML_escapement_super, "super" );
-XML_CONSTASCII_ACTION( sXML_even_page, "even-page" );
-XML_CONSTASCII_ACTION( sXML_event, "event" );
-XML_CONSTASCII_ACTION( sXML_event_name, "event-name" );
-XML_CONSTASCII_ACTION( sXML_events, "events" );
-XML_CONSTASCII_ACTION( sXML_execute, "execute" );
-XML_CONSTASCII_ACTION( sXML_execute_macro, "execute-macro" );
-XML_CONSTASCII_ACTION( sXML_exists, "exists" );
-XML_CONSTASCII_ACTION( sXML_exp, "exp" );
-XML_CONSTASCII_ACTION( sXML_exponential, "exponential" );
-XML_CONSTASCII_ACTION( sXML_expression, "expression");
-XML_CONSTASCII_ACTION( sXML_extra, "extra");
-XML_CONSTASCII_ACTION( sXML_extrude, "extrude" );
-XML_CONSTASCII_ACTION( sXML_factorial, "factorial" );
-XML_CONSTASCII_ACTION( sXML_fade_from_bottom, "fade-from-bottom" );
-XML_CONSTASCII_ACTION( sXML_fade_from_center, "fade-from-center" );
-XML_CONSTASCII_ACTION( sXML_fade_from_left, "fade-from-left" );
-XML_CONSTASCII_ACTION( sXML_fade_from_lowerleft, "fade-from-lowerleft" );
-XML_CONSTASCII_ACTION( sXML_fade_from_lowerright, "fade-from-lowerright" );
-XML_CONSTASCII_ACTION( sXML_fade_from_right, "fade-from-right" );
-XML_CONSTASCII_ACTION( sXML_fade_from_top, "fade-from-top" );
-XML_CONSTASCII_ACTION( sXML_fade_from_upperleft, "fade-from-upperleft" );
-XML_CONSTASCII_ACTION( sXML_fade_from_upperright, "fade-from-upperright" );
-XML_CONSTASCII_ACTION( sXML_fade_to_center, "fade-to-center" );
-XML_CONSTASCII_ACTION( sXML_fade_out, "fade-out" );
-XML_CONSTASCII_ACTION( sXML_false, "false" );
-XML_CONSTASCII_ACTION( sXML_family, "family" );
-XML_CONSTASCII_ACTION( sXML_fast, "fast" );
-XML_CONSTASCII_ACTION( sXML_field_number, "field-number");
-XML_CONSTASCII_ACTION( sXML_file_name, "file-name" );
-XML_CONSTASCII_ACTION( sXML_fill, "fill" );
-XML_CONSTASCII_ACTION( sXML_fill_color , "fill-color" );
-XML_CONSTASCII_ACTION( sXML_fill_gradient_name, "fill-gradient-name" );
-XML_CONSTASCII_ACTION( sXML_fill_hatch_name, "fill-hatch-name" );
-XML_CONSTASCII_ACTION( sXML_fill_hatch_solid, "fill-hatch-solid" );
-XML_CONSTASCII_ACTION( sXML_fill_image, "fill-image" );
-XML_CONSTASCII_ACTION( sXML_fill_image_height, "fill-image-height" );
-XML_CONSTASCII_ACTION( sXML_fill_image_name, "fill-image-name" );
-XML_CONSTASCII_ACTION( sXML_fill_image_width, "fill-image-width" );
-XML_CONSTASCII_ACTION( sXML_filter, "filter");
-XML_CONSTASCII_ACTION( sXML_filter_and, "filter-and");
-XML_CONSTASCII_ACTION( sXML_filter_condition, "filter-condition");
-XML_CONSTASCII_ACTION( sXML_filter_name, "filter-name" );
-XML_CONSTASCII_ACTION( sXML_filter_options, "filter-options" );
-XML_CONSTASCII_ACTION( sXML_filter_or, "filter-or");
-XML_CONSTASCII_ACTION( sXML_first_date_time, "first-date-time");
-XML_CONSTASCII_ACTION( sXML_first_page, "first-page");
-XML_CONSTASCII_ACTION( sXML_first_page_number, "first-page-number");
-XML_CONSTASCII_ACTION( sXML_fit_to_contour, "fit-to-contour");
-XML_CONSTASCII_ACTION( sXML_fit_to_size, "fit-to-size" );
-XML_CONSTASCII_ACTION( sXML_fix, "fix" );
-XML_CONSTASCII_ACTION( sXML_fixed, "fixed" );
-XML_CONSTASCII_ACTION( sXML_flat, "flat" );
-XML_CONSTASCII_ACTION( sXML_float, "float");
-XML_CONSTASCII_ACTION( sXML_floating_frame, "floating-frame");
-XML_CONSTASCII_ACTION( sXML_floor, "floor" );
-XML_CONSTASCII_ACTION( sXML_fn, "fn" );
-XML_CONSTASCII_ACTION( sXML_focal_length, "focal-length");
-XML_CONSTASCII_ACTION( sXML_font_char_width, "font-char-width" );
-XML_CONSTASCII_ACTION( sXML_font_charset, "font-charset" );
-XML_CONSTASCII_ACTION( sXML_font_charset_asian, "font-charset-asian" );
-XML_CONSTASCII_ACTION( sXML_font_charset_complex, "font-charset-complex" );
-XML_CONSTASCII_ACTION( sXML_font_color, "font-color" );
-XML_CONSTASCII_ACTION( sXML_font_decl, "font-decl" );
-XML_CONSTASCII_ACTION( sXML_font_decls, "font-decls" );
-XML_CONSTASCII_ACTION( sXML_font_family, "font-family" );
-XML_CONSTASCII_ACTION( sXML_font_family_asian, "font-family-asian" );
-XML_CONSTASCII_ACTION( sXML_font_family_complex, "font-family-complex" );
-XML_CONSTASCII_ACTION( sXML_font_family_generic, "font-family-generic" );
-XML_CONSTASCII_ACTION( sXML_font_family_generic_asian, "font-family-generic-asian" );
-XML_CONSTASCII_ACTION( sXML_font_family_generic_complex, "font-family-generic-complex" );
-XML_CONSTASCII_ACTION( sXML_font_kerning, "font-kerning" );
-XML_CONSTASCII_ACTION( sXML_font_name, "font-name" );
-XML_CONSTASCII_ACTION( sXML_font_name_asian, "font-name-asian" );
-XML_CONSTASCII_ACTION( sXML_font_name_complex, "font-name-complex" );
-XML_CONSTASCII_ACTION( sXML_font_pitch, "font-pitch" );
-XML_CONSTASCII_ACTION( sXML_font_pitch_asian, "font-pitch-asian" );
-XML_CONSTASCII_ACTION( sXML_font_pitch_complex, "font-pitch-complex" );
-XML_CONSTASCII_ACTION( sXML_font_relief, "font-relief" );
-XML_CONSTASCII_ACTION( sXML_font_size, "font-size" );
-XML_CONSTASCII_ACTION( sXML_font_size_asian, "font-size-asian" );
-XML_CONSTASCII_ACTION( sXML_font_size_complex, "font-size-complex" );
-XML_CONSTASCII_ACTION( sXML_font_size_rel, "font-size-rel" );
-XML_CONSTASCII_ACTION( sXML_font_size_rel_asian, "font-size-rel-asian" );
-XML_CONSTASCII_ACTION( sXML_font_size_rel_complex, "font-size-rel-complex" );
-XML_CONSTASCII_ACTION( sXML_font_style, "font-style" );
-XML_CONSTASCII_ACTION( sXML_font_style_asian, "font-style-asian" );
-XML_CONSTASCII_ACTION( sXML_font_style_complex, "font-style-complex" );
-XML_CONSTASCII_ACTION( sXML_font_style_name, "font-style-name" );
-XML_CONSTASCII_ACTION( sXML_font_style_name_asian, "font-style-name-asian" );
-XML_CONSTASCII_ACTION( sXML_font_style_name_complex, "font-style-name-complex" );
-XML_CONSTASCII_ACTION( sXML_font_variant, "font-variant" );
-XML_CONSTASCII_ACTION( sXML_font_weight, "font-weight" );
-XML_CONSTASCII_ACTION( sXML_font_weight_asian, "font-weight-asian" );
-XML_CONSTASCII_ACTION( sXML_font_weight_complex, "font-weight-complex" );
-XML_CONSTASCII_ACTION( sXML_font_width, "font-width" );
-XML_CONSTASCII_ACTION( sXML_font_word_line_mode, "font-word-line-mode" );
-XML_CONSTASCII_ACTION( sXML_fontfamily, "fontfamily" );
-XML_CONSTASCII_ACTION( sXML_fontsize, "fontsize" );
-XML_CONSTASCII_ACTION( sXML_fontstyle, "fontstyle" );
-XML_CONSTASCII_ACTION( sXML_fontweight, "fontweight" );
-XML_CONSTASCII_ACTION( sXML_fontwork_adjust, "fontwork-adjust" );
-XML_CONSTASCII_ACTION( sXML_fontwork_distance, "fontwork-distance" );
-XML_CONSTASCII_ACTION( sXML_fontwork_form, "fontwork-form" );
-XML_CONSTASCII_ACTION( sXML_fontwork_hide_form, "fontwork-hide-form" );
-XML_CONSTASCII_ACTION( sXML_fontwork_mirror, "fontwork-mirror" );
-XML_CONSTASCII_ACTION( sXML_fontwork_outline, "fontwork-outline" );
-XML_CONSTASCII_ACTION( sXML_fontwork_shadow, "fontwork-shadow" );
-XML_CONSTASCII_ACTION( sXML_fontwork_shadow_color, "fontwork-shadow-color" );
-XML_CONSTASCII_ACTION( sXML_fontwork_shadow_offset_x, "fontwork-shadow-offset-x" );
-XML_CONSTASCII_ACTION( sXML_fontwork_shadow_offset_y, "fontwork-shadow-offset-y" );
-XML_CONSTASCII_ACTION( sXML_fontwork_shadow_transparence, "fontwork-shadow-transparence" );
-XML_CONSTASCII_ACTION( sXML_fontwork_start, "fontwork-start" );
-XML_CONSTASCII_ACTION( sXML_fontwork_style, "fontwork-style" );
-XML_CONSTASCII_ACTION( sXML_footer, "footer" );
-XML_CONSTASCII_ACTION( sXML_footer_left, "footer-left" );
-XML_CONSTASCII_ACTION( sXML_footer_style, "footer-style" );
-XML_CONSTASCII_ACTION( sXML_footnote, "footnote" );
-XML_CONSTASCII_ACTION( sXML_footnote_body, "footnote-body" );
-XML_CONSTASCII_ACTION( sXML_footnote_citation, "footnote-citation" );
-XML_CONSTASCII_ACTION( sXML_footnote_continuation_notice_backward, "footnote-continuation-notice-backward" );
-XML_CONSTASCII_ACTION( sXML_footnote_continuation_notice_forward, "footnote-continuation-notice-forward" );
-XML_CONSTASCII_ACTION( sXML_footnote_max_height, "footnote-max-height" );
-XML_CONSTASCII_ACTION( sXML_distance_after_sep, "distance-after-sep" );
-XML_CONSTASCII_ACTION( sXML_distance_before_sep, "distance-before-sep" );
-XML_CONSTASCII_ACTION( sXML_footnote_ref, "footnote-ref" );
-XML_CONSTASCII_ACTION( sXML_footnote_sep, "footnote-sep" );
-XML_CONSTASCII_ACTION( sXML_footnotes_configuration, "footnotes-configuration");
-XML_CONSTASCII_ACTION( sXML_footnotes_position, "footnotes-position" );
-XML_CONSTASCII_ACTION( sXML_forall, "forall" );
-XML_CONSTASCII_ACTION( sXML_force_manual, "force-manual" );
-XML_CONSTASCII_ACTION( sXML_foreground, "foreground" );
-XML_CONSTASCII_ACTION( sXML_foreign_object, "foreign-object" );
-XML_CONSTASCII_ACTION( sXML_format_change, "format-change" );
-XML_CONSTASCII_ACTION( sXML_format_source, "format-source" );
-XML_CONSTASCII_ACTION( sXML_forms, "forms" );
-XML_CONSTASCII_ACTION( sXML_formula, "formula");
-XML_CONSTASCII_ACTION( sXML_formula_hidden, "formula-hidden");
-XML_CONSTASCII_ACTION( sXML_formulas, "formulas");
-XML_CONSTASCII_ACTION( sXML_fraction, "fraction" );
-XML_CONSTASCII_ACTION( sXML_frame, "frame" );
-XML_CONSTASCII_ACTION( sXML_frame_content, "frame-content" );
-XML_CONSTASCII_ACTION( sXML_frame_display_scrollbar, "frame-display-scrollbar" );
-XML_CONSTASCII_ACTION( sXML_frame_display_border, "frame-display-border" );
-XML_CONSTASCII_ACTION( sXML_frame_margin_horizontal, "frame-margin-horizontal" );
-XML_CONSTASCII_ACTION( sXML_frame_margin_vertical, "frame-margin-vertical" );
-XML_CONSTASCII_ACTION( sXML_frame_end_margin, "frame-end-margin" );
-XML_CONSTASCII_ACTION( sXML_frame_name, "frame-name" );
-XML_CONSTASCII_ACTION( sXML_frame_start_margin, "frame-start-margin" );
-XML_CONSTASCII_ACTION( sXML_freeze, "freeze" );
-XML_CONSTASCII_ACTION( sXML_freeze_position, "freeze-position" );
-XML_CONSTASCII_ACTION( sXML_from_another_table, "from-another-table" );
-XML_CONSTASCII_ACTION( sXML_from_inside, "from-inside" );
-XML_CONSTASCII_ACTION( sXML_from_left, "from-left" );
-XML_CONSTASCII_ACTION( sXML_from_same_table, "from-same-table" );
-XML_CONSTASCII_ACTION( sXML_from_top, "from-top" );
-XML_CONSTASCII_ACTION( sXML_fuchsia, "fuchsia");
-XML_CONSTASCII_ACTION( sXML_full, "full" );
-XML_CONSTASCII_ACTION( sXML_full_screen, "full-screen" );
-XML_CONSTASCII_ACTION( sXML_function, "function");
-XML_CONSTASCII_ACTION( sXML_g , "g" );
-XML_CONSTASCII_ACTION( sXML_gamma , "gamma" );
-XML_CONSTASCII_ACTION( sXML_gap, "gap" );
-XML_CONSTASCII_ACTION( sXML_gap_width, "gap-width" );
-XML_CONSTASCII_ACTION( sXML_gcd, "gcd" );
-XML_CONSTASCII_ACTION( sXML_generator, "generator" );
-XML_CONSTASCII_ACTION( sXML_geq, "geq" );
-XML_CONSTASCII_ACTION( sXML_gouraud, "gouraud");
-XML_CONSTASCII_ACTION( sXML_gradient , "gradient" );
-XML_CONSTASCII_ACTION( sXML_gradient_angle, "angle" );
-XML_CONSTASCII_ACTION( sXML_gradient_border, "border" );
-XML_CONSTASCII_ACTION( sXML_gradient_step_count , "gradient-step-count" );
-XML_CONSTASCII_ACTION( sXML_gradient_style, "gradient-style" );
-XML_CONSTASCII_ACTION( sXML_gradientstyle_axial, "axial" );
-XML_CONSTASCII_ACTION( sXML_gradientstyle_ellipsoid, "ellipsoid" );
-XML_CONSTASCII_ACTION( sXML_gradientstyle_linear, "linear" );
-XML_CONSTASCII_ACTION( sXML_gradientstyle_radial, "radial" );
-XML_CONSTASCII_ACTION( sXML_gradientstyle_rectangular, "rectangular" );
-XML_CONSTASCII_ACTION( sXML_gradientstyle_square, "square" );
-XML_CONSTASCII_ACTION( sXML_grand_total, "grand-total");
-XML_CONSTASCII_ACTION( sXML_graphic , "graphic" );
-XML_CONSTASCII_ACTION( sXML_gray, "gray" );
-XML_CONSTASCII_ACTION( sXML_green , "green" );
-XML_CONSTASCII_ACTION( sXML_greyscale, "greyscale" );
-XML_CONSTASCII_ACTION( sXML_grid, "grid" );
-XML_CONSTASCII_ACTION( sXML_groove, "groove" );
-XML_CONSTASCII_ACTION( sXML_group_by_field_number, "group-by-field-number");
-XML_CONSTASCII_ACTION( sXML_group_name, "group-name" );
-XML_CONSTASCII_ACTION( sXML_grouping, "grouping" );
-XML_CONSTASCII_ACTION( sXML_gt, "gt" );
-XML_CONSTASCII_ACTION( sXML_h, "h" );
-XML_CONSTASCII_ACTION( sXML_hanging, "hanging" );
-XML_CONSTASCII_ACTION( sXML_has_persistent_data, "has-persistent-data");
-XML_CONSTASCII_ACTION( sXML_hatch , "hatch" );
-XML_CONSTASCII_ACTION( sXML_hatch_distance, "distance" );
-XML_CONSTASCII_ACTION( sXML_hatch_style, "style" );
-XML_CONSTASCII_ACTION( sXML_hatchstyle_double, "double" );
-XML_CONSTASCII_ACTION( sXML_hatchstyle_single, "single" );
-XML_CONSTASCII_ACTION( sXML_hatchstyle_triple, "triple" );
-XML_CONSTASCII_ACTION( sXML_header, "header" );
-XML_CONSTASCII_ACTION( sXML_header_left, "header-left" );
-XML_CONSTASCII_ACTION( sXML_header_style, "header-style" );
-XML_CONSTASCII_ACTION( sXML_headers, "headers" );
-XML_CONSTASCII_ACTION( sXML_height, "height" );
-XML_CONSTASCII_ACTION( sXML_help_file_name, "help-file-name" );
-XML_CONSTASCII_ACTION( sXML_help_id, "help-id" );
-XML_CONSTASCII_ACTION( sXML_help_message, "help-message" );
-XML_CONSTASCII_ACTION( sXML_hidden, "hidden" );
-XML_CONSTASCII_ACTION( sXML_hidden_and_protected, "hidden-and-protected");
-XML_CONSTASCII_ACTION( sXML_hidden_paragraph, "hidden-paragraph" );
-XML_CONSTASCII_ACTION( sXML_hidden_text, "hidden-text" );
-XML_CONSTASCII_ACTION( sXML_highlighted_range, "highlighted-range" );
-XML_CONSTASCII_ACTION( sXML_horizontal, "horizontal" );
-XML_CONSTASCII_ACTION( sXML_horizontal_lines, "horizontal-lines" );
-XML_CONSTASCII_ACTION( sXML_horizontal_on_left_pages, "horizontal-on-left-pages" );
-XML_CONSTASCII_ACTION( sXML_horizontal_on_right_pages, "horizontal-on-right-pages" );
-XML_CONSTASCII_ACTION( sXML_horizontal_pos, "horizontal-pos" );
-XML_CONSTASCII_ACTION( sXML_horizontal_rel, "horizontal-rel" );
-XML_CONSTASCII_ACTION( sXML_horizontal_scrollbar_width, "horizontal-scrollbar-width" );
-XML_CONSTASCII_ACTION( sXML_horizontal_segments, "horizontal-segments" );
-XML_CONSTASCII_ACTION( sXML_horizontal_split_mode, "horizontal-split-mode" );
-XML_CONSTASCII_ACTION( sXML_horizontal_split_position, "horizontal-split-position" );
-XML_CONSTASCII_ACTION( sXML_horizontal_stripes, "horizontal-stripes" );
-XML_CONSTASCII_ACTION( sXML_hours, "hours" );
-XML_CONSTASCII_ACTION( sXML_howpublished, "howpublished" );
-XML_CONSTASCII_ACTION( sXML_href, "href" );
-XML_CONSTASCII_ACTION( sXML_html, "html");
-XML_CONSTASCII_ACTION( sXML_hyperlink_behaviour, "hyperlink-behaviour" );
-XML_CONSTASCII_ACTION( sXML_hyphenate, "hyphenate" );
-XML_CONSTASCII_ACTION( sXML_hyphenation_keep, "hyphenation-keep" );
-XML_CONSTASCII_ACTION( sXML_hyphenation_ladder_count, "hyphenation-ladder-count" );
-XML_CONSTASCII_ACTION( sXML_hyphenation_push_char_count, "hyphenation-push-char-count" );
-XML_CONSTASCII_ACTION( sXML_hyphenation_remain_char_count, "hyphenation-remain-char-count" );
-XML_CONSTASCII_ACTION( sXML_i, "i" );
-XML_CONSTASCII_ACTION( sXML_icon, "icon" );
-XML_CONSTASCII_ACTION( sXML_id, "id" );
-XML_CONSTASCII_ACTION( sXML_ident, "ident");
-XML_CONSTASCII_ACTION( sXML_identifier, "identifier" );
-XML_CONSTASCII_ACTION( sXML_identify_categories, "identify-categories");
-XML_CONSTASCII_ACTION( sXML_ideograph_alpha, "ideograph-alpha");
-XML_CONSTASCII_ACTION( sXML_ignore_case, "ignore-case" );
-XML_CONSTASCII_ACTION( sXML_ignore_empty_rows, "ignore-empty-rows");
-XML_CONSTASCII_ACTION( sXML_illustration_index, "illustration-index" );
-XML_CONSTASCII_ACTION( sXML_illustration_index_entry_template, "illustration-index-entry-template" );
-XML_CONSTASCII_ACTION( sXML_illustration_index_source, "illustration-index-source" );
-XML_CONSTASCII_ACTION( sXML_image, "image" );
-XML_CONSTASCII_ACTION( sXML_image_count, "image-count" );
-XML_CONSTASCII_ACTION( sXML_image_map, "image-map" );
-XML_CONSTASCII_ACTION( sXML_implies, "implies" );
-XML_CONSTASCII_ACTION( sXML_in, "in");
-XML_CONSTASCII_ACTION( sXML_in_range, "in-range");
-XML_CONSTASCII_ACTION( sXML_inbook, "inbook" );
-XML_CONSTASCII_ACTION( sXML_incollection, "incollection" );
-XML_CONSTASCII_ACTION( sXML_increment, "increment" );
-XML_CONSTASCII_ACTION( sXML_index, "index");
-XML_CONSTASCII_ACTION( sXML_index_body, "index-body");
-XML_CONSTASCII_ACTION( sXML_index_entry_bibliography, "index-entry-bibliography" );
-XML_CONSTASCII_ACTION( sXML_index_entry_chapter, "index-entry-chapter" );
-XML_CONSTASCII_ACTION( sXML_index_entry_chapter_number, "index-entry-chapter-number" );
-XML_CONSTASCII_ACTION( sXML_index_entry_link_end, "index-entry-link-end" );
-XML_CONSTASCII_ACTION( sXML_index_entry_link_start, "index-entry-link-start" );
-XML_CONSTASCII_ACTION( sXML_index_entry_page_number, "index-entry-page-number" );
-XML_CONSTASCII_ACTION( sXML_index_entry_span, "index-entry-span" );
-XML_CONSTASCII_ACTION( sXML_index_entry_tab_stop, "index-entry-tab-stop" );
-XML_CONSTASCII_ACTION( sXML_index_entry_template, "index-entry-template" );
-XML_CONSTASCII_ACTION( sXML_index_entry_text, "index-entry-text" );
-XML_CONSTASCII_ACTION( sXML_index_name, "index-name" );
-XML_CONSTASCII_ACTION( sXML_index_scope, "index-scope" );
-XML_CONSTASCII_ACTION( sXML_index_source_style, "index-source-style" );
-XML_CONSTASCII_ACTION( sXML_index_source_styles, "index-source-styles" );
-XML_CONSTASCII_ACTION( sXML_index_title, "index-title" );
-XML_CONSTASCII_ACTION( sXML_index_title_template, "index-title-template" );
-XML_CONSTASCII_ACTION( sXML_information, "information" );
-XML_CONSTASCII_ACTION( sXML_initial_creator, "initial-creator" );
-XML_CONSTASCII_ACTION( sXML_inproceedings, "inproceedings" );
-XML_CONSTASCII_ACTION( sXML_insertion, "insertion" );
-XML_CONSTASCII_ACTION( sXML_insertion_cut_off, "insertion-cut-off" );
-XML_CONSTASCII_ACTION( sXML_inset, "inset" );
-XML_CONSTASCII_ACTION( sXML_inside, "inside" );
-XML_CONSTASCII_ACTION( sXML_institution, "institution" );
-XML_CONSTASCII_ACTION( sXML_int, "int" );
-XML_CONSTASCII_ACTION( sXML_intensity, "intensity" );
-XML_CONSTASCII_ACTION( sXML_intersect, "intersect" );
-XML_CONSTASCII_ACTION( sXML_interval, "interval" );
-XML_CONSTASCII_ACTION( sXML_interval_major, "interval-major" );
-XML_CONSTASCII_ACTION( sXML_interval_minor, "interval-minor" );
-XML_CONSTASCII_ACTION( sXML_into_english_number, "into-english-number" );
-XML_CONSTASCII_ACTION( sXML_inverse, "inverse" );
-XML_CONSTASCII_ACTION( sXML_is_active, "is-active");
-XML_CONSTASCII_ACTION( sXML_is_data_layout_field, "is-data-layout-field");
-XML_CONSTASCII_ACTION( sXML_is_hidden, "is-hidden" );
-XML_CONSTASCII_ACTION( sXML_is_selection, "is-selection");
-XML_CONSTASCII_ACTION( sXML_isbn, "isbn" );
-XML_CONSTASCII_ACTION( sXML_italic, "italic" );
-XML_CONSTASCII_ACTION( sXML_iteration, "iteration" );
-XML_CONSTASCII_ACTION( sXML_journal, "journal" );
-XML_CONSTASCII_ACTION( sXML_justified, "justified" );
-XML_CONSTASCII_ACTION( sXML_justify, "justify" );
-XML_CONSTASCII_ACTION( sXML_justify_single_word, "justify-single-word" );
-XML_CONSTASCII_ACTION( sXML_keep_with_next, "keep-with-next" );
-XML_CONSTASCII_ACTION( sXML_kerning_normal, "normal" );
-XML_CONSTASCII_ACTION( sXML_key, "key" );
-XML_CONSTASCII_ACTION( sXML_key1, "key1" );
-XML_CONSTASCII_ACTION( sXML_key2, "key2" );
-XML_CONSTASCII_ACTION( sXML_keyword, "keyword" );
-XML_CONSTASCII_ACTION( sXML_keywords, "keywords" );
-XML_CONSTASCII_ACTION( sXML_km, "km" );
-XML_CONSTASCII_ACTION( sXML_label, "label" );
-XML_CONSTASCII_ACTION( sXML_label_arrangement, "label-arrangement" );
-XML_CONSTASCII_ACTION( sXML_label_cell_address, "label-cell-address" );
-XML_CONSTASCII_ACTION( sXML_label_cell_range_address, "label-cell-range-address" );
-XML_CONSTASCII_ACTION( sXML_label_range, "label-range" );
-XML_CONSTASCII_ACTION( sXML_label_ranges, "label-ranges" );
-XML_CONSTASCII_ACTION( sXML_layer, "layer" );
-XML_CONSTASCII_ACTION( sXML_layer_set, "layer-set" );
-XML_CONSTASCII_ACTION( sXML_lambda, "lambda" );
-XML_CONSTASCII_ACTION( sXML_landscape, "landscape" );
-XML_CONSTASCII_ACTION( sXML_language, "language" );
-XML_CONSTASCII_ACTION( sXML_language_asian, "language-asian" );
-XML_CONSTASCII_ACTION( sXML_language_complex, "language-complex" );
-XML_CONSTASCII_ACTION( sXML_last_column_spanned, "last-column-spanned" );
-XML_CONSTASCII_ACTION( sXML_last_page, "last-page" );
-XML_CONSTASCII_ACTION( sXML_last_row_spanned, "last-row-spanned" );
-XML_CONSTASCII_ACTION( sXML_leader_char, "leader-char" );
-XML_CONSTASCII_ACTION( sXML_left, "left" );
-XML_CONSTASCII_ACTION( sXML_left_outside, "left-outside" );
-XML_CONSTASCII_ACTION( sXML_left_top_position, "left-top-position" );
-XML_CONSTASCII_ACTION( sXML_legend, "legend" );
-XML_CONSTASCII_ACTION( sXML_legend_position, "legend-position" );
-XML_CONSTASCII_ACTION( sXML_length, "length" );
-XML_CONSTASCII_ACTION( sXML_leq, "leq" );
-XML_CONSTASCII_ACTION( sXML_let_text, "let-text" );
-XML_CONSTASCII_ACTION( sXML_letter_kerning, "letter-kerning" );
-XML_CONSTASCII_ACTION( sXML_letter_spacing, "letter-spacing" );
-XML_CONSTASCII_ACTION( sXML_letters, "letters" );
-XML_CONSTASCII_ACTION( sXML_level, "level" );
-XML_CONSTASCII_ACTION( sXML_library, "library" );
-XML_CONSTASCII_ACTION( sXML_library_embedded, "library-embedded" );
-XML_CONSTASCII_ACTION( sXML_library_linked, "library-linked" );
-XML_CONSTASCII_ACTION( sXML_light, "light");
-XML_CONSTASCII_ACTION( sXML_lighting_mode, "lighting-mode");
-XML_CONSTASCII_ACTION( sXML_lime, "lime" );
-XML_CONSTASCII_ACTION( sXML_limit, "limit" );
-XML_CONSTASCII_ACTION( sXML_line, "line" );
-XML_CONSTASCII_ACTION( sXML_line_break, "line-break" );
-XML_CONSTASCII_ACTION( sXML_line_height, "line-height" );
-XML_CONSTASCII_ACTION( sXML_line_height_at_least, "line-height-at-least" );
-XML_CONSTASCII_ACTION( sXML_line_spacing, "line-spacing" );
-XML_CONSTASCII_ACTION( sXML_linear, "linear" );
-XML_CONSTASCII_ACTION( sXML_linenumbering_configuration, "linenumbering-configuration" );
-XML_CONSTASCII_ACTION( sXML_linenumbering_separator, "linenumbering-separator" );
-XML_CONSTASCII_ACTION( sXML_lines, "lines" );
-XML_CONSTASCII_ACTION( sXML_lines_used, "lines-used" );
-XML_CONSTASCII_ACTION( sXML_link_data_style_to_source, "link-data-style-to-source" );
-XML_CONSTASCII_ACTION( sXML_link_to_source_data, "link-to-source-data" );
-XML_CONSTASCII_ACTION( sXML_list, "list");
-XML_CONSTASCII_ACTION( sXML_list_block, "list-block" );
-XML_CONSTASCII_ACTION( sXML_list_header, "list-header" );
-XML_CONSTASCII_ACTION( sXML_list_info, "list-info" );
-XML_CONSTASCII_ACTION( sXML_list_item, "list-item" );
-XML_CONSTASCII_ACTION( sXML_list_level, "list-level" );
-XML_CONSTASCII_ACTION( sXML_list_level_style_bullet, "list-level-style-bullet" );
-XML_CONSTASCII_ACTION( sXML_list_level_style_image, "list-level-style-image" );
-XML_CONSTASCII_ACTION( sXML_list_level_style_number, "list-level-style-number" );
-XML_CONSTASCII_ACTION( sXML_list_name, "list-name" );
-XML_CONSTASCII_ACTION( sXML_list_style, "list-style" );
-XML_CONSTASCII_ACTION( sXML_list_style_name, "list-style-name" );
-XML_CONSTASCII_ACTION( sXML_ln, "ln" );
-XML_CONSTASCII_ACTION( sXML_locked, "locked" );
-XML_CONSTASCII_ACTION( sXML_log, "log" );
-XML_CONSTASCII_ACTION( sXML_logarithmic, "logarithmic" );
-XML_CONSTASCII_ACTION( sXML_logbase, "logbase" );
-XML_CONSTASCII_ACTION( sXML_long, "long" );
-XML_CONSTASCII_ACTION( sXML_lowlimit, "lowlimit" );
-XML_CONSTASCII_ACTION( sXML_lr_tb, "lr-tb" );
-XML_CONSTASCII_ACTION( sXML_lt, "lt");
-XML_CONSTASCII_ACTION( sXML_ltr, "ltr");
-XML_CONSTASCII_ACTION( sXML_luminance , "luminance" );
-XML_CONSTASCII_ACTION( sXML_macro_name, "macro-name");
-XML_CONSTASCII_ACTION( sXML_maction, "maction");
-XML_CONSTASCII_ACTION( sXML_main_entry_style_name, "main-entry-style-name" );
-XML_CONSTASCII_ACTION( sXML_major, "major" );
-XML_CONSTASCII_ACTION( sXML_maligngroup, "maligngroup");
-XML_CONSTASCII_ACTION( sXML_malignmark, "malignmark");
-XML_CONSTASCII_ACTION( sXML_manual, "manual" );
-XML_CONSTASCII_ACTION( sXML_map, "map" );
-XML_CONSTASCII_ACTION( sXML_margin_bottom, "margin-bottom" );
-XML_CONSTASCII_ACTION( sXML_margin_left, "margin-left" );
-XML_CONSTASCII_ACTION( sXML_margin_right, "margin-right" );
-XML_CONSTASCII_ACTION( sXML_margin_top, "margin-top" );
-XML_CONSTASCII_ACTION( sXML_margins, "margins" );
-XML_CONSTASCII_ACTION( sXML_marker, "marker" );
-XML_CONSTASCII_ACTION( sXML_marker_end , "marker-end" );
-XML_CONSTASCII_ACTION( sXML_marker_end_center , "marker-end-center" );
-XML_CONSTASCII_ACTION( sXML_marker_end_width , "marker-end-width" );
-XML_CONSTASCII_ACTION( sXML_marker_start , "marker-start" );
-XML_CONSTASCII_ACTION( sXML_marker_start_center , "marker-start-center" );
-XML_CONSTASCII_ACTION( sXML_marker_start_width , "marker-start-width" );
-XML_CONSTASCII_ACTION( sXML_maroon, "maroon" );
-XML_CONSTASCII_ACTION( sXML_master_page, "master-page" );
-XML_CONSTASCII_ACTION( sXML_master_page_name , "master-page-name" );
-XML_CONSTASCII_ACTION( sXML_master_styles, "master-styles" );
-XML_CONSTASCII_ACTION( sXML_mastersthesis, "mastersthesis" );
-XML_CONSTASCII_ACTION( sXML_match, "match");
-XML_CONSTASCII_ACTION( sXML_math, "math");
-XML_CONSTASCII_ACTION( sXML_matrix, "matrix");
-XML_CONSTASCII_ACTION( sXML_matrix_covered, "matrix-covered");
-XML_CONSTASCII_ACTION( sXML_matrixrow, "matrixrow");
-XML_CONSTASCII_ACTION( sXML_max, "max" );
-XML_CONSTASCII_ACTION( sXML_max_edge, "max-edge");
-XML_CONSTASCII_ACTION( sXML_max_height, "max-height");
-XML_CONSTASCII_ACTION( sXML_max_width, "max-width");
-XML_CONSTASCII_ACTION( sXML_maximum, "maximum" );
-XML_CONSTASCII_ACTION( sXML_maximum_difference, "maximum-difference" );
-XML_CONSTASCII_ACTION( sXML_may_break_between_rows, "may-break-between-rows" );
-XML_CONSTASCII_ACTION( sXML_may_script, "may-script" );
-XML_CONSTASCII_ACTION( sXML_mean, "mean" );
-XML_CONSTASCII_ACTION( sXML_mean_value, "mean-value" );
-XML_CONSTASCII_ACTION( sXML_measure, "measure" );
-XML_CONSTASCII_ACTION( sXML_measure_align, "measure-align" );
-XML_CONSTASCII_ACTION( sXML_measure_vertical_align, "measure-vertical-align" );
-XML_CONSTASCII_ACTION( sXML_median, "median" );
-XML_CONSTASCII_ACTION( sXML_medium, "medium" );
-XML_CONSTASCII_ACTION( sXML_merror, "merror" );
-XML_CONSTASCII_ACTION( sXML_message_type, "message-type" );
-XML_CONSTASCII_ACTION( sXML_meta, "meta" );
-XML_CONSTASCII_ACTION( sXML_mfenced, "mfenced" );
-XML_CONSTASCII_ACTION( sXML_mfrac, "mfrac" );
-XML_CONSTASCII_ACTION( sXML_mi, "mi" ); //MathML Math Identifier
-XML_CONSTASCII_ACTION( sXML_middle, "middle" );
-XML_CONSTASCII_ACTION( sXML_mime_type, "mime-type" );
-XML_CONSTASCII_ACTION( sXML_min, "min" );
-XML_CONSTASCII_ACTION( sXML_min_denominator_digits, "min-denominator-digits" );
-XML_CONSTASCII_ACTION( sXML_min_edge, "min-edge");
-XML_CONSTASCII_ACTION( sXML_min_exponent_digits, "min-exponent-digits" );
-XML_CONSTASCII_ACTION( sXML_min_height, "min-height" );
-XML_CONSTASCII_ACTION( sXML_min_width, "min-width" );
-XML_CONSTASCII_ACTION( sXML_min_integer_digits, "min-integer-digits" );
-XML_CONSTASCII_ACTION( sXML_min_label_distance, "min-label-distance" );
-XML_CONSTASCII_ACTION( sXML_min_label_width, "min-label-width" );
-XML_CONSTASCII_ACTION( sXML_min_line_height, "min-line-height" );
-XML_CONSTASCII_ACTION( sXML_min_numerator_digits, "min-numerator-digits" );
-XML_CONSTASCII_ACTION( sXML_min_row_height, "min-row-height" );
-XML_CONSTASCII_ACTION( sXML_minimum, "minimum" );
-XML_CONSTASCII_ACTION( sXML_minor, "minor" );
-XML_CONSTASCII_ACTION( sXML_minus, "minus" );
-XML_CONSTASCII_ACTION( sXML_minutes, "minutes" );
-XML_CONSTASCII_ACTION( sXML_mirror, "mirror" );
-XML_CONSTASCII_ACTION( sXML_mirrored, "mirrored" );
-XML_CONSTASCII_ACTION( sXML_misc, "misc" );
-XML_CONSTASCII_ACTION( sXML_miter , "miter" );
-XML_CONSTASCII_ACTION( sXML_mmultiscripts, "mmultiscripts" );
-XML_CONSTASCII_ACTION( sXML_mm, "mm" );
-XML_CONSTASCII_ACTION( sXML_mn, "mn" );
-XML_CONSTASCII_ACTION( sXML_mo, "mo" );
-XML_CONSTASCII_ACTION( sXML_mode, "mode" );
-XML_CONSTASCII_ACTION( sXML_modern, "modern" );
-XML_CONSTASCII_ACTION( sXML_modification_date, "modification-date" );
-XML_CONSTASCII_ACTION( sXML_modification_time, "modification-time" );
-XML_CONSTASCII_ACTION( sXML_modulate, "modulate" );
-XML_CONSTASCII_ACTION( sXML_module, "module" );
-XML_CONSTASCII_ACTION( sXML_moment, "moment" );
-XML_CONSTASCII_ACTION( sXML_mono, "mono" );
-XML_CONSTASCII_ACTION( sXML_month, "month" );
-XML_CONSTASCII_ACTION( sXML_move_from_bottom, "move-from-bottom" );
-XML_CONSTASCII_ACTION( sXML_move_from_left, "move-from-left" );
-XML_CONSTASCII_ACTION( sXML_move_from_right, "move-from-right" );
-XML_CONSTASCII_ACTION( sXML_move_from_top, "move-from-top" );
-XML_CONSTASCII_ACTION( sXML_move_protect, "move-protect" );
-XML_CONSTASCII_ACTION( sXML_mover, "mover" );
-XML_CONSTASCII_ACTION( sXML_movement, "movement" );
-XML_CONSTASCII_ACTION( sXML_movement_cut_off, "movement-cut-off" );
-XML_CONSTASCII_ACTION( sXML_mouse_as_pen, "mouse-as-pen" );
-XML_CONSTASCII_ACTION( sXML_mouse_visible, "mouse-visible" );
-XML_CONSTASCII_ACTION( sXML_mpadded, "mpadded");
-XML_CONSTASCII_ACTION( sXML_mphantom, "mphantom");
-XML_CONSTASCII_ACTION( sXML_mprescripts, "mprescripts");
-XML_CONSTASCII_ACTION( sXML_mroot, "mroot");
-XML_CONSTASCII_ACTION( sXML_mrow, "mrow");
-XML_CONSTASCII_ACTION( sXML_ms, "ms");
-XML_CONSTASCII_ACTION( sXML_mspace, "mspace");
-XML_CONSTASCII_ACTION( sXML_msqrt, "msqrt");
-XML_CONSTASCII_ACTION( sXML_mstyle, "mstyle");
-XML_CONSTASCII_ACTION( sXML_msub, "msub");
-XML_CONSTASCII_ACTION( sXML_msubsup, "msubsup");
-XML_CONSTASCII_ACTION( sXML_msup, "msup");
-XML_CONSTASCII_ACTION( sXML_mtable, "mtable");
-XML_CONSTASCII_ACTION( sXML_mtd, "mtd");
-XML_CONSTASCII_ACTION( sXML_mtext, "mtext");
-XML_CONSTASCII_ACTION( sXML_mtr, "mtr");
-XML_CONSTASCII_ACTION( sXML_multi_deletion_spanned, "multi-deletion-spanned");
-XML_CONSTASCII_ACTION( sXML_munder, "munder");
-XML_CONSTASCII_ACTION( sXML_munderover, "munderover");
-XML_CONSTASCII_ACTION( sXML_name, "name" );
-XML_CONSTASCII_ACTION( sXML_name_and_extension, "name-and-extension" );
-XML_CONSTASCII_ACTION( sXML_named_expression, "named-expression");
-XML_CONSTASCII_ACTION( sXML_named_expressions, "named-expressions");
-XML_CONSTASCII_ACTION( sXML_named_range, "named-range");
-XML_CONSTASCII_ACTION( sXML_navy, "navy");
-XML_CONSTASCII_ACTION( sXML_neq, "neq" );
-XML_CONSTASCII_ACTION( sXML_new, "new" );
-XML_CONSTASCII_ACTION( sXML_next, "next" );
-XML_CONSTASCII_ACTION( sXML_next_page, "next-page" );
-XML_CONSTASCII_ACTION( sXML_next_style_name, "next-style-name" );
-XML_CONSTASCII_ACTION( sXML_nohref, "nohref" );
-XML_CONSTASCII_ACTION( sXML_no_limit, "no-limit" );
-XML_CONSTASCII_ACTION( sXML_no_wrap, "no-wrap" );
-XML_CONSTASCII_ACTION( sXML_noempty, "!empty");
-XML_CONSTASCII_ACTION( sXML_nomatch, "!match");
-XML_CONSTASCII_ACTION( sXML_none, "none" );
-XML_CONSTASCII_ACTION( sXML_noprtsubset, "notprsubset" );
-XML_CONSTASCII_ACTION( sXML_normal, "normal" );
-XML_CONSTASCII_ACTION( sXML_normals_direction, "normals-direction" );
-XML_CONSTASCII_ACTION( sXML_normals_kind, "normals-kind" );
-XML_CONSTASCII_ACTION( sXML_not, "not" );
-XML_CONSTASCII_ACTION( sXML_not_equal_date, "not-equal-date" );
-XML_CONSTASCII_ACTION( sXML_note, "note" );
-XML_CONSTASCII_ACTION( sXML_notes, "notes" );
-XML_CONSTASCII_ACTION( sXML_notin, "notin" );
-XML_CONSTASCII_ACTION( sXML_notsubset, "notsubset" );
-XML_CONSTASCII_ACTION( sXML_null_date, "null-date" );
-XML_CONSTASCII_ACTION( sXML_null_year, "null-year" );
-XML_CONSTASCII_ACTION( sXML_num_format, "num-format" );
-XML_CONSTASCII_ACTION( sXML_num_letter_sync, "num-letter-sync" );
-XML_CONSTASCII_ACTION( sXML_num_prefix, "num-prefix" );
-XML_CONSTASCII_ACTION( sXML_num_suffix, "num-suffix" );
-XML_CONSTASCII_ACTION( sXML_number, "number" );
-XML_CONSTASCII_ACTION( sXML_number_and_name, "number-and-name" );
-XML_CONSTASCII_ACTION( sXML_number_columns_repeated, "number-columns-repeated" );
-XML_CONSTASCII_ACTION( sXML_number_columns_spanned, "number-columns-spanned" );
-XML_CONSTASCII_ACTION( sXML_number_lines, "number-lines" );
-XML_CONSTASCII_ACTION( sXML_number_matrix_columns_spanned, "number-matrix-columns-spanned" );
-XML_CONSTASCII_ACTION( sXML_number_matrix_rows_spanned, "number-matrix-rows-spanned" );
-XML_CONSTASCII_ACTION( sXML_number_position, "number-position" );
-XML_CONSTASCII_ACTION( sXML_number_rows_repeated, "number-rows-repeated" );
-XML_CONSTASCII_ACTION( sXML_number_rows_spanned, "number-rows-spanned" );
-XML_CONSTASCII_ACTION( sXML_number_style, "number-style" );
-XML_CONSTASCII_ACTION( sXML_number_wrapped_paragraphs, "number-wrapped-paragraphs" );
-XML_CONSTASCII_ACTION( sXML_numbered_entries, "numbered-entries" );
-XML_CONSTASCII_ACTION( sXML_object, "object" );
-XML_CONSTASCII_ACTION( sXML_object_count, "object-count" );
-XML_CONSTASCII_ACTION( sXML_object_index, "object-index" );
-XML_CONSTASCII_ACTION( sXML_object_index_entry_template, "object-index-entry-template" );
-XML_CONSTASCII_ACTION( sXML_object_index_source, "object-index-source" );
-XML_CONSTASCII_ACTION( sXML_object_name, "object-name");
-XML_CONSTASCII_ACTION( sXML_object_ole, "object-ole" );
-XML_CONSTASCII_ACTION( sXML_objects, "objects" );
-XML_CONSTASCII_ACTION( sXML_odd_page, "odd-page" );
-XML_CONSTASCII_ACTION( sXML_offset, "offset" );
-XML_CONSTASCII_ACTION( sXML_olive, "olive" );
-XML_CONSTASCII_ACTION( sXML_online, "online" );
-XML_CONSTASCII_ACTION( sXML_online_text, "online-text" );
-XML_CONSTASCII_ACTION( sXML_onLoad, "onLoad" );
-XML_CONSTASCII_ACTION( sXML_onRequest, "onRequest" );
-XML_CONSTASCII_ACTION( sXML_on_update_keep_size, "on-update-keep-size");
-XML_CONSTASCII_ACTION( sXML_on_update_keep_styles, "on-update-keep-styles");
-XML_CONSTASCII_ACTION( sXML_opaque_background, "background" );
-XML_CONSTASCII_ACTION( sXML_opaque_foreground, "foreground" );
-XML_CONSTASCII_ACTION( sXML_open, "open" );
-XML_CONSTASCII_ACTION( sXML_open_horizontal, "open-horizontal" );
-XML_CONSTASCII_ACTION( sXML_open_vertical, "open-vertical" );
-XML_CONSTASCII_ACTION( sXML_operation, "operation");
-XML_CONSTASCII_ACTION( sXML_operator, "operator");
-XML_CONSTASCII_ACTION( sXML_optimal, "optimal");
-XML_CONSTASCII_ACTION( sXML_or, "or");
-XML_CONSTASCII_ACTION( sXML_order, "order");
-XML_CONSTASCII_ACTION( sXML_ordered_list, "ordered-list" );
-XML_CONSTASCII_ACTION( sXML_organizations, "organizations" );
-XML_CONSTASCII_ACTION( sXML_orientation, "orientation");
-XML_CONSTASCII_ACTION( sXML_orientation_landscape, "orientation-landscape" );
-XML_CONSTASCII_ACTION( sXML_orientation_portrait, "orientation-portrait" );
-XML_CONSTASCII_ACTION( sXML_origin, "origin" );
-XML_CONSTASCII_ACTION( sXML_orphans, "orphans" );
-XML_CONSTASCII_ACTION( sXML_outline_level, "outline-level" );
-XML_CONSTASCII_ACTION( sXML_outline_level_style, "outline-level-style" );
-XML_CONSTASCII_ACTION( sXML_outline_style, "outline-style" );
-XML_CONSTASCII_ACTION( sXML_outset, "outset" );
-XML_CONSTASCII_ACTION( sXML_outside, "outside" );
-XML_CONSTASCII_ACTION( sXML_overlap, "overlap" );
-XML_CONSTASCII_ACTION( sXML_p, "p" );
-XML_CONSTASCII_ACTION( sXML_package_name, "package-name" );
-XML_CONSTASCII_ACTION( sXML_padding, "padding" );
-XML_CONSTASCII_ACTION( sXML_padding_bottom, "padding-bottom" );
-XML_CONSTASCII_ACTION( sXML_padding_left, "padding-left" );
-XML_CONSTASCII_ACTION( sXML_padding_right, "padding-right" );
-XML_CONSTASCII_ACTION( sXML_padding_top, "padding-top" );
-XML_CONSTASCII_ACTION( sXML_page, "page" );
-XML_CONSTASCII_ACTION( sXML_page_adjust, "page-adjust" );
-XML_CONSTASCII_ACTION( sXML_page_breaks_on_group_change, "page-breaks-on-group-change");
-XML_CONSTASCII_ACTION( sXML_page_content, "page-content" );
-XML_CONSTASCII_ACTION( sXML_page_continuation_string, "page-continuation-string" );
-XML_CONSTASCII_ACTION( sXML_page_count, "page-count" );
-XML_CONSTASCII_ACTION( sXML_page_end_margin, "page-end-margin" );
-XML_CONSTASCII_ACTION( sXML_page_height, "page-height" );
-XML_CONSTASCII_ACTION( sXML_page_master, "page-master" );
-XML_CONSTASCII_ACTION( sXML_page_master_name, "page-master-name" );
-XML_CONSTASCII_ACTION( sXML_page_number, "page-number" );
-XML_CONSTASCII_ACTION( sXML_page_start_margin, "page-start-margin" );
-XML_CONSTASCII_ACTION( sXML_page_style_name, "page-style-name" );
-XML_CONSTASCII_ACTION( sXML_page_thumbnail, "page-thumbnail" );
-XML_CONSTASCII_ACTION( sXML_page_usage, "page-usage" );
-XML_CONSTASCII_ACTION( sXML_page_variable_get, "page-variable-get" );
-XML_CONSTASCII_ACTION( sXML_page_variable_set, "page-variable-set" );
-XML_CONSTASCII_ACTION( sXML_page_view_zoom_value, "page-view-zoom-value" );
-XML_CONSTASCII_ACTION( sXML_page_width, "page-width" );
-XML_CONSTASCII_ACTION( sXML_pages, "pages" );
-XML_CONSTASCII_ACTION( sXML_paper_tray_number, "paper-tray-number" );
-XML_CONSTASCII_ACTION( sXML_paragraph, "paragraph" );
-XML_CONSTASCII_ACTION( sXML_paragraph_content, "paragraph-content" );
-XML_CONSTASCII_ACTION( sXML_paragraph_count, "paragraph-count" );
-XML_CONSTASCII_ACTION( sXML_paragraph_end_margin, "paragraph-end-margin" );
-XML_CONSTASCII_ACTION( sXML_paragraph_start_margin, "paragraph-start-margin" );
-XML_CONSTASCII_ACTION( sXML_param, "param" );
-XML_CONSTASCII_ACTION( sXML_parallel, "parallel" );
-XML_CONSTASCII_ACTION( sXML_parent_style_name, "parent-style-name" );
-XML_CONSTASCII_ACTION( sXML_parse_sql_statement, "parse-sql-statement");
-XML_CONSTASCII_ACTION( sXML_parsed, "parsed" );
-XML_CONSTASCII_ACTION( sXML_pause, "pause" );
-XML_CONSTASCII_ACTION( sXML_partialdiff, "partialdiff");
-XML_CONSTASCII_ACTION( sXML_password, "password");
-XML_CONSTASCII_ACTION( sXML_passwort, "passwort");
-XML_CONSTASCII_ACTION( sXML_path , "path" );
-XML_CONSTASCII_ACTION( sXML_pending , "pending" );
-XML_CONSTASCII_ACTION( sXML_percentage, "percentage");
-XML_CONSTASCII_ACTION( sXML_percentage_style, "percentage-style" );
-XML_CONSTASCII_ACTION( sXML_perspective, "perspective");
-XML_CONSTASCII_ACTION( sXML_phdthesis, "phdthesis" );
-XML_CONSTASCII_ACTION( sXML_phong, "phong");
-XML_CONSTASCII_ACTION( sXML_pie_offset, "pie-offset" );
-XML_CONSTASCII_ACTION( sXML_placeholder, "placeholder" );
-XML_CONSTASCII_ACTION( sXML_placeholder_type, "placeholder-type" );
-XML_CONSTASCII_ACTION( sXML_placing, "placing" );
-XML_CONSTASCII_ACTION( sXML_plain_number, "plain-number" );
-XML_CONSTASCII_ACTION( sXML_plain_number_and_name, "plain-number-and-name" );
-XML_CONSTASCII_ACTION( sXML_plot_area, "plot-area" );
-XML_CONSTASCII_ACTION( sXML_plugin, "plugin" );
-XML_CONSTASCII_ACTION( sXML_plus, "plus" );
-XML_CONSTASCII_ACTION( sXML_points, "points" );
-XML_CONSTASCII_ACTION( sXML_polygon , "polygon" );
-XML_CONSTASCII_ACTION( sXML_polyline , "polyline" );
-XML_CONSTASCII_ACTION( sXML_polynomial, "polynomial" );
-XML_CONSTASCII_ACTION( sXML_pool_id, "pool-id" );
-XML_CONSTASCII_ACTION( sXML_portrait, "portrait" );
-XML_CONSTASCII_ACTION( sXML_position, "position" );
-XML_CONSTASCII_ACTION( sXML_position_bottom, "position-bottom" );
-XML_CONSTASCII_ACTION( sXML_position_left, "position-left" );
-XML_CONSTASCII_ACTION( sXML_position_right, "position-right" );
-XML_CONSTASCII_ACTION( sXML_position_top, "position-top" );
-XML_CONSTASCII_ACTION( sXML_posture_italic, "italic" );
-XML_CONSTASCII_ACTION( sXML_posture_normal, "normal" );
-XML_CONSTASCII_ACTION( sXML_posture_oblique, "oblique" );
-XML_CONSTASCII_ACTION( sXML_power, "power" );
-XML_CONSTASCII_ACTION( sXML_precision_as_shown, "precision-as-shown" );
-XML_CONSTASCII_ACTION( sXML_prefix, "prefix" );
-XML_CONSTASCII_ACTION( sXML_presentation, "presentation" );
-XML_CONSTASCII_ACTION( sXML_presentation_chart , "chart" );
-XML_CONSTASCII_ACTION( sXML_presentation_graphic , "graphic" );
-XML_CONSTASCII_ACTION( sXML_presentation_notes , "notes" );
-XML_CONSTASCII_ACTION( sXML_presentation_object , "object" );
-XML_CONSTASCII_ACTION( sXML_presentation_orgchart , "orgchart" );
-XML_CONSTASCII_ACTION( sXML_presentation_outline , "outline" );
-XML_CONSTASCII_ACTION( sXML_presentation_page , "page" );
-XML_CONSTASCII_ACTION( sXML_presentation_page_layout, "presentation-page-layout" );
-XML_CONSTASCII_ACTION( sXML_presentation_page_layout_name, "presentation-page-layout-name" );
-XML_CONSTASCII_ACTION( sXML_presentation_subtitle , "subtitle" );
-XML_CONSTASCII_ACTION( sXML_presentation_table , "table" );
-XML_CONSTASCII_ACTION( sXML_presentation_title , "title" );
-XML_CONSTASCII_ACTION( sXML_previous, "previous" );
-XML_CONSTASCII_ACTION( sXML_previous_page, "previous-page" );
-XML_CONSTASCII_ACTION( sXML_print, "print" );
-XML_CONSTASCII_ACTION( sXML_printable, "printable" );
-XML_CONSTASCII_ACTION( sXML_print_content, "print-content");
-XML_CONSTASCII_ACTION( sXML_print_date, "print-date" );
-XML_CONSTASCII_ACTION( sXML_print_orientation, "print-orientation");
-XML_CONSTASCII_ACTION( sXML_print_page_order, "print-page-order");
-XML_CONSTASCII_ACTION( sXML_print_range, "print-range");
-XML_CONSTASCII_ACTION( sXML_print_ranges, "print-ranges");
-XML_CONSTASCII_ACTION( sXML_print_time, "print-time" );
-XML_CONSTASCII_ACTION( sXML_printed_by, "printed-by" );
-XML_CONSTASCII_ACTION( sXML_proceedings, "proceedings" );
-XML_CONSTASCII_ACTION( sXML_product, "product" );
-XML_CONSTASCII_ACTION( sXML_projection, "projection");
-XML_CONSTASCII_ACTION( sXML_properties, "properties" );
-XML_CONSTASCII_ACTION( sXML_protect, "protect" );
-XML_CONSTASCII_ACTION( sXML_protect_content, "content" );
-XML_CONSTASCII_ACTION( sXML_protect_position, "position" );
-XML_CONSTASCII_ACTION( sXML_protect_size, "size" );
-XML_CONSTASCII_ACTION( sXML_protected, "protected" );
-XML_CONSTASCII_ACTION( sXML_protection_key, "protection-key" );
-XML_CONSTASCII_ACTION( sXML_prsubset, "prsubset" );
-XML_CONSTASCII_ACTION( sXML_publisher, "publisher" );
-XML_CONSTASCII_ACTION( sXML_punctuation_wrap, "punctuation-wrap" );
-XML_CONSTASCII_ACTION( sXML_purple, "purple" );
-XML_CONSTASCII_ACTION( sXML_pyramid, "pyramid" );
-XML_CONSTASCII_ACTION( sXML_quarter, "quarter" );
-XML_CONSTASCII_ACTION( sXML_query_name, "query-name");
-XML_CONSTASCII_ACTION( sXML_quo_vadis, "quo-vadis" );
-XML_CONSTASCII_ACTION( sXML_quotient, "quotient" );
-XML_CONSTASCII_ACTION( sXML_r, "r" );
-XML_CONSTASCII_ACTION( sXML_radar, "radar" );
-XML_CONSTASCII_ACTION( sXML_random, "random" );
-XML_CONSTASCII_ACTION( sXML_range_address, "range-address");
-XML_CONSTASCII_ACTION( sXML_range_usable_as, "range-usable-as");
-XML_CONSTASCII_ACTION( sXML_recreate_on_edit , "recreate-on-edit" );
-XML_CONSTASCII_ACTION( sXML_rect , "rect" );
-XML_CONSTASCII_ACTION( sXML_red , "red" );
-XML_CONSTASCII_ACTION( sXML_ref_name, "ref-name" );
-XML_CONSTASCII_ACTION( sXML_reference, "reference" );
-XML_CONSTASCII_ACTION( sXML_reference_end, "reference-end" );
-XML_CONSTASCII_ACTION( sXML_reference_format, "reference-format" );
-XML_CONSTASCII_ACTION( sXML_reference_mark, "reference-mark" );
-XML_CONSTASCII_ACTION( sXML_reference_mark_end, "reference-mark-end" );
-XML_CONSTASCII_ACTION( sXML_reference_mark_start, "reference-mark-start" );
-XML_CONSTASCII_ACTION( sXML_reference_ref, "reference-ref" );
-XML_CONSTASCII_ACTION( sXML_reference_start, "reference-start" );
-XML_CONSTASCII_ACTION( sXML_reference_type, "reference-type" );
-XML_CONSTASCII_ACTION( sXML_refresh_delay, "refresh-delay" );
-XML_CONSTASCII_ACTION( sXML_region_center, "region-center" );
-XML_CONSTASCII_ACTION( sXML_region_left, "region-left" );
-XML_CONSTASCII_ACTION( sXML_region_right, "region-right" );
-XML_CONSTASCII_ACTION( sXML_register_true, "register-true" );
-XML_CONSTASCII_ACTION( sXML_register_truth_ref_style_name, "register-truth-ref-style-name" );
-XML_CONSTASCII_ACTION( sXML_regression_type, "regression-type" );
-XML_CONSTASCII_ACTION( sXML_rejected, "rejected" );
-XML_CONSTASCII_ACTION( sXML_rejecting_change_id, "rejecting-change-id" );
-XML_CONSTASCII_ACTION( sXML_rejection, "rejection" );
-XML_CONSTASCII_ACTION( sXML_rel_column_width, "rel-column-width" );
-XML_CONSTASCII_ACTION( sXML_rel_height, "rel-height" );
-XML_CONSTASCII_ACTION( sXML_rel_width, "rel-width" );
-XML_CONSTASCII_ACTION( sXML_relative, "relative" ) ;
-XML_CONSTASCII_ACTION( sXML_relative_tab_stop_position, "relative-tab-stop-position" );
-XML_CONSTASCII_ACTION( sXML_reln, "reln" ) ;
-XML_CONSTASCII_ACTION( sXML_rem, "rem" ) ;
-XML_CONSTASCII_ACTION( sXML_remove_dependents, "remove-dependents" );
-XML_CONSTASCII_ACTION( sXML_remove_precedents, "remove-precedents" );
-XML_CONSTASCII_ACTION( sXML_repeat, "repeat" );
-XML_CONSTASCII_ACTION( sXML_repeat_column, "repeat-column");
-XML_CONSTASCII_ACTION( sXML_repeat_row, "repeat-row");
-XML_CONSTASCII_ACTION( sXML_repeated, "repeated" );
-XML_CONSTASCII_ACTION( sXML_replace, "replace" );
-XML_CONSTASCII_ACTION( sXML_report_type, "report-type" );
-XML_CONSTASCII_ACTION( sXML_restart_on_page, "restart-on-page" );
-XML_CONSTASCII_ACTION( sXML_revision, "revision" );
-XML_CONSTASCII_ACTION( sXML_ridge, "ridge" );
-XML_CONSTASCII_ACTION( sXML_right, "right" );
-XML_CONSTASCII_ACTION( sXML_right_outside, "right-outside" );
-XML_CONSTASCII_ACTION( sXML_ring, "ring" );
-XML_CONSTASCII_ACTION( sXML_role, "role" );
-XML_CONSTASCII_ACTION( sXML_roll_from_bottom, "roll-from-bottom" );
-XML_CONSTASCII_ACTION( sXML_roll_from_left, "roll-from-left" );
-XML_CONSTASCII_ACTION( sXML_roll_from_right, "roll-from-right" );
-XML_CONSTASCII_ACTION( sXML_roman, "roman" );
-XML_CONSTASCII_ACTION( sXML_root, "root" );
-XML_CONSTASCII_ACTION( sXML_rotate, "rotate" );
-XML_CONSTASCII_ACTION( sXML_rotation, "rotation" );
-XML_CONSTASCII_ACTION( sXML_rotation_align, "rotation-align" );
-XML_CONSTASCII_ACTION( sXML_rotation_angle, "rotation-angle" );
-XML_CONSTASCII_ACTION( sXML_round , "round" );
-XML_CONSTASCII_ACTION( sXML_row, "row");
-XML_CONSTASCII_ACTION( sXML_rows, "rows");
-XML_CONSTASCII_ACTION( sXML_row_height, "row-height" );
-XML_CONSTASCII_ACTION( sXML_row_number, "row-number" );
-XML_CONSTASCII_ACTION( sXML_ruby, "ruby" );
-XML_CONSTASCII_ACTION( sXML_ruby_align, "ruby-align" );
-XML_CONSTASCII_ACTION( sXML_ruby_base, "ruby-base" );
-XML_CONSTASCII_ACTION( sXML_ruby_position, "ruby-position" );
-XML_CONSTASCII_ACTION( sXML_ruby_text, "ruby-text" );
-XML_CONSTASCII_ACTION( sXML_run_through, "run-through" );
-XML_CONSTASCII_ACTION( sXML_rx, "rx" );
-XML_CONSTASCII_ACTION( sXML_ry, "ry" );
-XML_CONSTASCII_ACTION( sXML_s, "s" );
-XML_CONSTASCII_ACTION( sXML_scale, "scale" );
-XML_CONSTASCII_ACTION( sXML_scale_min, "scale-min" );
-XML_CONSTASCII_ACTION( sXML_scale_text, "scale-text" );
-XML_CONSTASCII_ACTION( sXML_scale_to, "scale-to" );
-XML_CONSTASCII_ACTION( sXML_scale_to_pages, "scale-to-pages" );
-XML_CONSTASCII_ACTION( sXML_scatter, "scatter" );
-XML_CONSTASCII_ACTION( sXML_scenario, "scenario" );
-XML_CONSTASCII_ACTION( sXML_scenario_ranges, "scenario-ranges" );
-XML_CONSTASCII_ACTION( sXML_scene, "scene");
-XML_CONSTASCII_ACTION( sXML_school, "school" );
-XML_CONSTASCII_ACTION( sXML_scientific_number, "scientific-number" );
-XML_CONSTASCII_ACTION( sXML_score_spaces, "score-spaces" );
-XML_CONSTASCII_ACTION( sXML_script, "script" );
-XML_CONSTASCII_ACTION( sXML_scroll, "scroll" );
-XML_CONSTASCII_ACTION( sXML_sdev, "sdev" );
-XML_CONSTASCII_ACTION( sXML_search_criteria_must_apply_to_whole_cell, "search-criteria-must-apply-to-whole-cell" );
-XML_CONSTASCII_ACTION( sXML_sec, "sec" );
-XML_CONSTASCII_ACTION( sXML_sech, "sech" );
-XML_CONSTASCII_ACTION( sXML_second_date_time, "second-date-time" );
-XML_CONSTASCII_ACTION( sXML_seconds, "seconds" );
-XML_CONSTASCII_ACTION( sXML_section, "section" );
-XML_CONSTASCII_ACTION( sXML_section_desc, "section-desc" );
-XML_CONSTASCII_ACTION( sXML_section_name, "section-name" );
-XML_CONSTASCII_ACTION( sXML_section_source, "section-source" );
-XML_CONSTASCII_ACTION( sXML_select_page, "select-page" );
-XML_CONSTASCII_ACTION( sXML_selector, "selector" );
-XML_CONSTASCII_ACTION( sXML_semantics, "semantics" );
-XML_CONSTASCII_ACTION( sXML_semi_automatic, "semi-automatic" );
-XML_CONSTASCII_ACTION( sXML_sender_city, "sender-city" );
-XML_CONSTASCII_ACTION( sXML_sender_company, "sender-company" );
-XML_CONSTASCII_ACTION( sXML_sender_country, "sender-country" );
-XML_CONSTASCII_ACTION( sXML_sender_email, "sender-email" );
-XML_CONSTASCII_ACTION( sXML_sender_fax, "sender-fax" );
-XML_CONSTASCII_ACTION( sXML_sender_firstname, "sender-firstname" );
-XML_CONSTASCII_ACTION( sXML_sender_initials, "sender-initials" );
-XML_CONSTASCII_ACTION( sXML_sender_lastname, "sender-lastname" );
-XML_CONSTASCII_ACTION( sXML_sender_phone_private, "sender-phone-private" );
-XML_CONSTASCII_ACTION( sXML_sender_phone_work, "sender-phone-work" );
-XML_CONSTASCII_ACTION( sXML_sender_position, "sender-position" );
-XML_CONSTASCII_ACTION( sXML_sender_postal_code, "sender-postal-code" );
-XML_CONSTASCII_ACTION( sXML_sender_state_or_province, "sender-state-or-province" );
-XML_CONSTASCII_ACTION( sXML_sender_street, "sender-street" );
-XML_CONSTASCII_ACTION( sXML_sender_title, "sender-title" );
-XML_CONSTASCII_ACTION( sXML_sep, "sep" );
-XML_CONSTASCII_ACTION( sXML_separation_character, "separation-character" );
-XML_CONSTASCII_ACTION( sXML_separator, "separator" );
-XML_CONSTASCII_ACTION( sXML_sequence, "sequence" );
-XML_CONSTASCII_ACTION( sXML_sequence_decl, "sequence-decl" );
-XML_CONSTASCII_ACTION( sXML_sequence_decls, "sequence-decls" );
-XML_CONSTASCII_ACTION( sXML_sequence_ref, "sequence-ref" );
-XML_CONSTASCII_ACTION( sXML_series, "series" );
-XML_CONSTASCII_ACTION( sXML_series_source, "series-source" );
-XML_CONSTASCII_ACTION( sXML_server_map, "server-map" );
-XML_CONSTASCII_ACTION( sXML_set, "set" );
-XML_CONSTASCII_ACTION( sXML_setdiff, "setdiff" );
-XML_CONSTASCII_ACTION( sXML_settings, "settings" );
-XML_CONSTASCII_ACTION( sXML_shade_mode, "shade-mode");
-XML_CONSTASCII_ACTION( sXML_shadow, "shadow" );
-XML_CONSTASCII_ACTION( sXML_shadow_color , "shadow-color" );
-XML_CONSTASCII_ACTION( sXML_shadow_offset_x , "shadow-offset-x" );
-XML_CONSTASCII_ACTION( sXML_shadow_offset_y , "shadow-offset-y" );
-XML_CONSTASCII_ACTION( sXML_shadow_slant, "shadow-slant");
-XML_CONSTASCII_ACTION( sXML_shadow_transparency , "shadow-transparency" );
-XML_CONSTASCII_ACTION( sXML_shape, "shape" );
-XML_CONSTASCII_ACTION( sXML_shapes, "shapes" );
-XML_CONSTASCII_ACTION( sXML_sheet_name, "sheet-name" );
-XML_CONSTASCII_ACTION( sXML_shininess, "shininess" );
-XML_CONSTASCII_ACTION( sXML_short, "short" );
-XML_CONSTASCII_ACTION( sXML_show, "show" );
-XML_CONSTASCII_ACTION( sXML_show_accepted_changes, "show-accepted-changes" );
-XML_CONSTASCII_ACTION( sXML_show_rejected_changes, "show-rejected-changes" );
-XML_CONSTASCII_ACTION( sXML_show_changes, "show-changes" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_author, "show-changes-by-author" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_author_name, "show-changes-by-author-name" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_comment, "show-changes-by-comment" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_comment_text, "show-changes-by-comment-text" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime, "show-changes-by-datetime" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime_mode, "show-changes-by-datetime-mode" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime_first_datetime, "show-changes-by-datetime-first-datetime" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_datetime_second_datetime, "show-changes-by-datetime-second-datetime" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_ranges, "show-changes-by-ranges" );
-XML_CONSTASCII_ACTION( sXML_show_changes_by_ranges_list, "show-changes-by-ranges-list" );
-XML_CONSTASCII_ACTION( sXML_show_logo, "show-logo" );
-XML_CONSTASCII_ACTION( sXML_show_unit, "show-unit" );
-XML_CONSTASCII_ACTION( sXML_shows, "shows" );
-XML_CONSTASCII_ACTION( sXML_side_by_side, "side-by-side" );
-XML_CONSTASCII_ACTION( sXML_silver, "silver" );
-XML_CONSTASCII_ACTION( sXML_simple, "simple" );
-XML_CONSTASCII_ACTION( sXML_sin, "sin" );
-XML_CONSTASCII_ACTION( sXML_since_date_time, "since-date-time" );
-XML_CONSTASCII_ACTION( sXML_since_save, "since-save" );
-XML_CONSTASCII_ACTION( sXML_sinh, "sinh" );
-XML_CONSTASCII_ACTION( sXML_size, "size" );
-XML_CONSTASCII_ACTION( sXML_size_protect, "size-protect" );
-XML_CONSTASCII_ACTION( sXML_slide, "slide" );
-XML_CONSTASCII_ACTION( sXML_slow, "slow" );
-XML_CONSTASCII_ACTION( sXML_soft_page_break, "soft-page-break" );
-XML_CONSTASCII_ACTION( sXML_solid, "solid" );
-XML_CONSTASCII_ACTION( sXML_solid_type, "solid-type" );
-XML_CONSTASCII_ACTION( sXML_sort, "sort");
-XML_CONSTASCII_ACTION( sXML_sort_ascending, "sort-ascending" );
-XML_CONSTASCII_ACTION( sXML_sort_by, "sort-by");
-XML_CONSTASCII_ACTION( sXML_sort_by_position, "sort-by-position" );
-XML_CONSTASCII_ACTION( sXML_sort_groups, "sort-groups");
-XML_CONSTASCII_ACTION( sXML_sort_key, "sort-key");
-XML_CONSTASCII_ACTION( sXML_sort_by_x_values, "sort-by-x-values" );
-XML_CONSTASCII_ACTION( sXML_source_cell_range, "source-cell-range");
-XML_CONSTASCII_ACTION( sXML_source_cell_range_addresses, "source-cell-range-addresses");
-XML_CONSTASCII_ACTION( sXML_source_field_name, "source-field-name");
-XML_CONSTASCII_ACTION( sXML_source_name, "source-name");
-XML_CONSTASCII_ACTION( sXML_source_range_address, "source-range-address");
-XML_CONSTASCII_ACTION( sXML_source_service, "source-service");
-XML_CONSTASCII_ACTION( sXML_space_before, "space-before" );
-XML_CONSTASCII_ACTION( sXML_span, "span" );
-XML_CONSTASCII_ACTION( sXML_specular, "specular");
-XML_CONSTASCII_ACTION( sXML_specular_color, "specular-color" );
-XML_CONSTASCII_ACTION( sXML_sphere, "sphere" );
-XML_CONSTASCII_ACTION( sXML_spiralin_left, "spiralin-left" );
-XML_CONSTASCII_ACTION( sXML_spiralin_right, "spiralin-right" );
-XML_CONSTASCII_ACTION( sXML_spiralout_left, "spiralout-left" );
-XML_CONSTASCII_ACTION( sXML_spiralout_right, "spiralout-right" );
-XML_CONSTASCII_ACTION( sXML_splines, "splines" );
-XML_CONSTASCII_ACTION( sXML_split, "split" );
-XML_CONSTASCII_ACTION( sXML_split_column, "split-column" );
-XML_CONSTASCII_ACTION( sXML_split_position, "split-position" );
-XML_CONSTASCII_ACTION( sXML_split_row, "split-row" );
-XML_CONSTASCII_ACTION( sXML_spreadsheet , "spreadsheet" );
-XML_CONSTASCII_ACTION( sXML_sql_statement, "sql-statement");
-XML_CONSTASCII_ACTION( sXML_stacked, "stacked" );
-XML_CONSTASCII_ACTION( sXML_stagger_even, "stagger-even" );
-XML_CONSTASCII_ACTION( sXML_stagger_odd, "stagger-odd" );
-XML_CONSTASCII_ACTION( sXML_standard, "standard" );
-XML_CONSTASCII_ACTION( sXML_standard_deviation, "standard-deviation" );
-XML_CONSTASCII_ACTION( sXML_starbasic, "starbasic" );
-XML_CONSTASCII_ACTION( sXML_start, "start" );
-XML_CONSTASCII_ACTION( sXML_start_color, "start-color" );
-XML_CONSTASCII_ACTION( sXML_start_column, "start-column" );
-XML_CONSTASCII_ACTION( sXML_start_intensity, "start-intensity" );
-XML_CONSTASCII_ACTION( sXML_start_numbering_at, "start-numbering-at" );
-XML_CONSTASCII_ACTION( sXML_start_page, "start-page" );
-XML_CONSTASCII_ACTION( sXML_start_position, "start-position" );
-XML_CONSTASCII_ACTION( sXML_start_row, "start-row" );
-XML_CONSTASCII_ACTION( sXML_start_table, "start-table" );
-XML_CONSTASCII_ACTION( sXML_start_value, "start-value" );
-XML_CONSTASCII_ACTION( sXML_start_with_navigator, "start-with-navigator" );
-XML_CONSTASCII_ACTION( sXML_statistics, "statistics" );
-XML_CONSTASCII_ACTION( sXML_status, "status" );
-XML_CONSTASCII_ACTION( sXML_stay_on_top, "stay-on-top" );
-XML_CONSTASCII_ACTION( sXML_stdev, "stdev" );
-XML_CONSTASCII_ACTION( sXML_stdevp, "stdevp" );
-XML_CONSTASCII_ACTION( sXML_steps, "steps" );
-XML_CONSTASCII_ACTION( sXML_stock, "stock" );
-XML_CONSTASCII_ACTION( sXML_stock_updown_bars, "stock-updown-bars" );
-XML_CONSTASCII_ACTION( sXML_stock_with_volume, "stock-with-volume" );
-XML_CONSTASCII_ACTION( sXML_stop, "stop" );
-XML_CONSTASCII_ACTION( sXML_stretch_from_bottom, "stretch-from-bottom" );
-XML_CONSTASCII_ACTION( sXML_stretch_from_left, "stretch-from-left" );
-XML_CONSTASCII_ACTION( sXML_stretch_from_right, "stretch-from-right" );
-XML_CONSTASCII_ACTION( sXML_stretch_from_top, "stretch-from-top" );
-XML_CONSTASCII_ACTION( sXML_stretchy, "stretchy" );
-XML_CONSTASCII_ACTION( sXML_strict , "strict" );
-XML_CONSTASCII_ACTION( sXML_string, "string");
-XML_CONSTASCII_ACTION( sXML_string_value, "string-value");
-XML_CONSTASCII_ACTION( sXML_string_value_if_false, "string-value-if-false" );
-XML_CONSTASCII_ACTION( sXML_string_value_if_true, "string-value-if-true" );
-XML_CONSTASCII_ACTION( sXML_stroke , "stroke" );
-XML_CONSTASCII_ACTION( sXML_stroke_color , "stroke-color" );
-XML_CONSTASCII_ACTION( sXML_stroke_dash , "stroke-dash" );
-XML_CONSTASCII_ACTION( sXML_stroke_linejoin , "stroke-linejoin" );
-XML_CONSTASCII_ACTION( sXML_stroke_opacity, "stroke-opacity" );
-XML_CONSTASCII_ACTION( sXML_stroke_width, "stroke-width" );
-XML_CONSTASCII_ACTION( sXML_structure_protected, "structure-protected" );
-XML_CONSTASCII_ACTION( sXML_style, "style" );
-XML_CONSTASCII_ACTION( sXML_style_name, "style-name" );
-XML_CONSTASCII_ACTION( sXML_styles, "styles" );
-XML_CONSTASCII_ACTION( sXML_stylesheet, "stylesheet" );
-XML_CONSTASCII_ACTION( sXML_sub_table, "sub-table" );
-XML_CONSTASCII_ACTION( sXML_subject, "subject" );
-XML_CONSTASCII_ACTION( sXML_subset, "subset" );
-XML_CONSTASCII_ACTION( sXML_subtitle, "subtitle" );
-XML_CONSTASCII_ACTION( sXML_subtotal_field, "subtotal-field");
-XML_CONSTASCII_ACTION( sXML_subtotal_rule, "subtotal-rule");
-XML_CONSTASCII_ACTION( sXML_subtotal_rules, "subtotal-rules");
-XML_CONSTASCII_ACTION( sXML_suffix, "suffix" );
-XML_CONSTASCII_ACTION( sXML_sum, "sum" );
-XML_CONSTASCII_ACTION( sXML_swiss, "swiss" );
-XML_CONSTASCII_ACTION( sXML_symbol, "symbol" );
-XML_CONSTASCII_ACTION( sXML_symbol_height, "symbol-height" );
-XML_CONSTASCII_ACTION( sXML_symbol_image_name, "symbol-image-name" );
-XML_CONSTASCII_ACTION( sXML_symbol_width, "symbol-width" );
-XML_CONSTASCII_ACTION( sXML_system, "system" );
-XML_CONSTASCII_ACTION( sXML_tab_stop, "tab-stop" );
-XML_CONSTASCII_ACTION( sXML_tab_stops, "tab-stops" );
-XML_CONSTASCII_ACTION( sXML_table, "table" );
-XML_CONSTASCII_ACTION( sXML_tables, "tables" );
-XML_CONSTASCII_ACTION( sXML_table_background, "table-background" );
-XML_CONSTASCII_ACTION( sXML_table_cell, "table-cell" );
-XML_CONSTASCII_ACTION( sXML_table_centering, "table-centering" );
-XML_CONSTASCII_ACTION( sXML_table_column, "table-column" );
-XML_CONSTASCII_ACTION( sXML_table_column_group, "table-column-group" );
-XML_CONSTASCII_ACTION( sXML_table_columns, "table-columns" );
-XML_CONSTASCII_ACTION( sXML_table_count, "table-count" );
-XML_CONSTASCII_ACTION( sXML_table_header, "table-header" );
-XML_CONSTASCII_ACTION( sXML_table_header_columns, "table-header-columns" );
-XML_CONSTASCII_ACTION( sXML_table_header_rows, "table-header-rows" );
-XML_CONSTASCII_ACTION( sXML_table_index, "table-index" );
-XML_CONSTASCII_ACTION( sXML_table_index_entry_template, "table-index-entry-template" );
-XML_CONSTASCII_ACTION( sXML_table_index_source, "table-index-source" );
-XML_CONSTASCII_ACTION( sXML_table_name, "table-name");
-XML_CONSTASCII_ACTION( sXML_table_number_list, "table-number-list");
-XML_CONSTASCII_ACTION( sXML_table_of_content, "table-of-content" );
-XML_CONSTASCII_ACTION( sXML_table_of_content_entry_template, "table-of-content-entry-template" );
-XML_CONSTASCII_ACTION( sXML_table_of_content_source, "table-of-content-source" );
-XML_CONSTASCII_ACTION( sXML_table_page, "table-page" );
-XML_CONSTASCII_ACTION( sXML_table_row, "table-row" );
-XML_CONSTASCII_ACTION( sXML_table_row_group, "table-row-group" );
-XML_CONSTASCII_ACTION( sXML_table_rows, "table-rows" );
-XML_CONSTASCII_ACTION( sXML_table_source, "table-source" );
-XML_CONSTASCII_ACTION( sXML_table_view, "table-view" );
-XML_CONSTASCII_ACTION( sXML_tab_stop_distance, "tab-stop-distance" );
-XML_CONSTASCII_ACTION( sXML_tan, "tan" );
-XML_CONSTASCII_ACTION( sXML_tanh, "tanh" );
-XML_CONSTASCII_ACTION( sXML_target_cell_address, "target-cell-address");
-XML_CONSTASCII_ACTION( sXML_target_frame_name, "target-frame-name" );
-XML_CONSTASCII_ACTION( sXML_target_range_address, "target-range-address");
-XML_CONSTASCII_ACTION( sXML_tb_rl, "tb-rl" );
-XML_CONSTASCII_ACTION( sXML_teal, "teal" );
-XML_CONSTASCII_ACTION( sXML_techreport, "techreport" );
-XML_CONSTASCII_ACTION( sXML_template, "template" );
-XML_CONSTASCII_ACTION( sXML_template_name, "template-name" );
-XML_CONSTASCII_ACTION( sXML_tendsto, "tendsto" );
-XML_CONSTASCII_ACTION( sXML_tex_filter, "texture-filter" );
-XML_CONSTASCII_ACTION( sXML_tex_generation_mode_x, "texture-generation-mode-x" );
-XML_CONSTASCII_ACTION( sXML_tex_generation_mode_y, "texture-generation-mode-y" );
-XML_CONSTASCII_ACTION( sXML_tex_kind, "texture-kind" );
-XML_CONSTASCII_ACTION( sXML_tex_mode, "texture-mode" );
-XML_CONSTASCII_ACTION( sXML_text, "text" );
-XML_CONSTASCII_ACTION( sXML_text_align, "text-align" );
-XML_CONSTASCII_ACTION( sXML_text_align_last, "text-align-last" );
-XML_CONSTASCII_ACTION( sXML_text_align_source, "text-align-source" );
-XML_CONSTASCII_ACTION( sXML_text_autospace, "text-autospace" );
-XML_CONSTASCII_ACTION( sXML_text_background_color, "text-background-color" );
-XML_CONSTASCII_ACTION( sXML_text_blinking, "text-blinking" );
-XML_CONSTASCII_ACTION( sXML_text_box, "text-box" );
-XML_CONSTASCII_ACTION( sXML_text_combine, "text-combine" );
-XML_CONSTASCII_ACTION( sXML_text_combine_end_char, "text-combine-end-char" );
-XML_CONSTASCII_ACTION( sXML_text_combine_start_char, "text-combine-start-char" );
-XML_CONSTASCII_ACTION( sXML_text_content, "text-content" );
-XML_CONSTASCII_ACTION( sXML_text_crossing_out, "text-crossing-out" );
-XML_CONSTASCII_ACTION( sXML_text_emphasize, "text-emphasize" );
-XML_CONSTASCII_ACTION( sXML_text_global, "text-global" );
-XML_CONSTASCII_ACTION( sXML_text_indent, "text-indent" );
-XML_CONSTASCII_ACTION( sXML_text_input, "text-input" );
-XML_CONSTASCII_ACTION( sXML_text_outline, "text-outline" );
-XML_CONSTASCII_ACTION( sXML_text_position, "text-position" );
-XML_CONSTASCII_ACTION( sXML_text_rotation_angle, "text-rotation-angle" );
-XML_CONSTASCII_ACTION( sXML_text_rotation_scale, "text-rotation-scale" );
-XML_CONSTASCII_ACTION( sXML_text_scale, "text-scale" );
-XML_CONSTASCII_ACTION( sXML_text_shadow, "text-shadow" );
-XML_CONSTASCII_ACTION( sXML_text_style, "text-style" );
-XML_CONSTASCII_ACTION( sXML_text_transform, "text-transform" );
-XML_CONSTASCII_ACTION( sXML_text_underline, "text-underline" );
-XML_CONSTASCII_ACTION( sXML_text_underline_color, "text-underline-color" );
-XML_CONSTASCII_ACTION( sXML_textarea_horizontal_align, "textarea-horizontal-align" );
-XML_CONSTASCII_ACTION( sXML_textarea_vertical_align, "textarea-vertical-align" );
-XML_CONSTASCII_ACTION( sXML_textual, "textual" );
-XML_CONSTASCII_ACTION( sXML_thick, "thick" );
-XML_CONSTASCII_ACTION( sXML_thin, "thin" );
-XML_CONSTASCII_ACTION( sXML_three_dimensional, "three-dimensional" );
-XML_CONSTASCII_ACTION( sXML_thumbnail, "thumbnail" );
-XML_CONSTASCII_ACTION( sXML_tick_marks_major_inner, "tick-marks-major-inner" );
-XML_CONSTASCII_ACTION( sXML_tick_marks_major_outer, "tick-marks-major-outer" );
-XML_CONSTASCII_ACTION( sXML_tick_marks_minor_inner, "tick-marks-minor-inner" );
-XML_CONSTASCII_ACTION( sXML_tick_marks_minor_outer, "tick-marks-minor-outer" );
-XML_CONSTASCII_ACTION( sXML_tile_repeat_offset, "tile-repeat-offset" );
-XML_CONSTASCII_ACTION( sXML_time, "time");
-XML_CONSTASCII_ACTION( sXML_time_adjust, "time-adjust" );
-XML_CONSTASCII_ACTION( sXML_time_style, "time-style" );
-XML_CONSTASCII_ACTION( sXML_time_value, "time-value");
-XML_CONSTASCII_ACTION( sXML_times, "times");
-XML_CONSTASCII_ACTION( sXML_title, "title" );
-XML_CONSTASCII_ACTION( sXML_to_another_table, "to-another-table" );
-XML_CONSTASCII_ACTION( sXML_toc_mark, "toc-mark" );
-XML_CONSTASCII_ACTION( sXML_toc_mark_end, "toc-mark-end" );
-XML_CONSTASCII_ACTION( sXML_toc_mark_start, "toc-mark-start" );
-XML_CONSTASCII_ACTION( sXML_top, "top" );
-XML_CONSTASCII_ACTION( sXML_top_percent, "top percent");
-XML_CONSTASCII_ACTION( sXML_top_values, "top values");
-XML_CONSTASCII_ACTION( sXML_trace_dependents, "trace-dependents" );
-XML_CONSTASCII_ACTION( sXML_trace_errors, "trace-errors" );
-XML_CONSTASCII_ACTION( sXML_trace_precedents, "trace-precedents" );
-XML_CONSTASCII_ACTION( sXML_track_changes, "track-changes" );
-XML_CONSTASCII_ACTION( sXML_tracked_changes, "tracked-changes" );
-XML_CONSTASCII_ACTION( sXML_tracked_changes_view_settings, "tracked-changes-view-settings" );
-XML_CONSTASCII_ACTION( sXML_transform , "transform" );
-XML_CONSTASCII_ACTION( sXML_transition_on_click, "transition-on-click" );
-XML_CONSTASCII_ACTION( sXML_transparency, "transparency" );
-XML_CONSTASCII_ACTION( sXML_transparency_name, "transparency-name" );
-XML_CONSTASCII_ACTION( sXML_transparent, "transparent" );
-XML_CONSTASCII_ACTION( sXML_transpose, "transpose" );
-XML_CONSTASCII_ACTION( sXML_true, "true" );
-XML_CONSTASCII_ACTION( sXML_truncate_on_overflow, "truncate-on-overflow" );
-XML_CONSTASCII_ACTION( sXML_ttb, "ttb");
-XML_CONSTASCII_ACTION( sXML_type, "type" );
-XML_CONSTASCII_ACTION( sXML_underline_bold, "bold" );
-XML_CONSTASCII_ACTION( sXML_underline_bold_dash, "bold-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_bold_dot_dash, "bold-dot-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_bold_dot_dot_dash, "bold-dot-dot-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_bold_dotted, "bold-dotted" );
-XML_CONSTASCII_ACTION( sXML_underline_bold_long_dash, "bold-long-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_bold_wave, "bold-wave" );
-XML_CONSTASCII_ACTION( sXML_underline_dash, "dash" );
-XML_CONSTASCII_ACTION( sXML_underline_dot_dash, "dot-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_dot_dot_dash, "dot-dot-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_dotted, "dotted" );
-XML_CONSTASCII_ACTION( sXML_underline_double, "double" );
-XML_CONSTASCII_ACTION( sXML_underline_double_wave, "double-wave" );
-XML_CONSTASCII_ACTION( sXML_underline_long_dash, "long-dash" );
-XML_CONSTASCII_ACTION( sXML_underline_none, "none" );
-XML_CONSTASCII_ACTION( sXML_underline_single, "single" );
-XML_CONSTASCII_ACTION( sXML_underline_small_wave, "small-wave" );
-XML_CONSTASCII_ACTION( sXML_underline_wave, "wave" );
-XML_CONSTASCII_ACTION( sXML_unformatted_text, "unformatted-text" );
-XML_CONSTASCII_ACTION( sXML_union, "union" );
-XML_CONSTASCII_ACTION( sXML_unit, "unit" );
-XML_CONSTASCII_ACTION( sXML_unordered_list, "unordered-list" );
-XML_CONSTASCII_ACTION( sXML_unpublished, "unpublished" );
-XML_CONSTASCII_ACTION( sXML_uplimit, "uplimit" );
-XML_CONSTASCII_ACTION( sXML_url, "url" );
-XML_CONSTASCII_ACTION( sXML_use_caption, "use-caption" );
-XML_CONSTASCII_ACTION( sXML_use_cell_protection, "use-cell-protection" );
-XML_CONSTASCII_ACTION( sXML_use_chart_objects, "use-chart-objects" );
-XML_CONSTASCII_ACTION( sXML_use_condition, "use-condition" );
-XML_CONSTASCII_ACTION( sXML_use_draw_objects, "use-draw-objects" );
-XML_CONSTASCII_ACTION( sXML_use_floating_frames, "use-floating-frames" );
-XML_CONSTASCII_ACTION( sXML_use_graphics, "use-graphics" );
-XML_CONSTASCII_ACTION( sXML_use_image_objects, "use-image-objects" );
-XML_CONSTASCII_ACTION( sXML_use_index_marks, "use-index-marks" );
-XML_CONSTASCII_ACTION( sXML_use_index_source_styles, "use-index-source-styles" );
-XML_CONSTASCII_ACTION( sXML_use_keys_as_entries, "use-keys-as-entries" );
-XML_CONSTASCII_ACTION( sXML_use_label, "use-label" );
-XML_CONSTASCII_ACTION( sXML_use_math_objects, "use-math-objects" );
-XML_CONSTASCII_ACTION( sXML_use_objects, "use-objects" );
-XML_CONSTASCII_ACTION( sXML_use_optimal_column_width, "use-optimal-column-width");
-XML_CONSTASCII_ACTION( sXML_use_optimal_row_height, "use-optimal-row-height");
-XML_CONSTASCII_ACTION( sXML_use_other_objects, "use-other-objects" );
-XML_CONSTASCII_ACTION( sXML_use_soft_page_breaks, "use-soft-page-breaks" );
-XML_CONSTASCII_ACTION( sXML_use_spreadsheet_objects, "use-spreadsheet-objects" );
-XML_CONSTASCII_ACTION( sXML_use_styles, "use-styles" );
-XML_CONSTASCII_ACTION( sXML_use_tables, "use-tables" );
-XML_CONSTASCII_ACTION( sXML_use_window_font_color, "use-window-font-color" );
-XML_CONSTASCII_ACTION( sXML_used_hierarchy, "used-hierarchy");
-XML_CONSTASCII_ACTION( sXML_user_defined, "user-defined" );
-XML_CONSTASCII_ACTION( sXML_user_field_decl, "user-field-decl" );
-XML_CONSTASCII_ACTION( sXML_user_field_decls, "user-field-decls" );
-XML_CONSTASCII_ACTION( sXML_user_field_get, "user-field-get" );
-XML_CONSTASCII_ACTION( sXML_user_field_input, "user-field-input" );
-XML_CONSTASCII_ACTION( sXML_user_index, "user-index" );
-XML_CONSTASCII_ACTION( sXML_user_index_entry_template, "user-index-entry-template" );
-XML_CONSTASCII_ACTION( sXML_user_index_mark, "user-index-mark" );
-XML_CONSTASCII_ACTION( sXML_user_index_mark_end, "user-index-mark-end" );
-XML_CONSTASCII_ACTION( sXML_user_index_mark_start, "user-index-mark-start" );
-XML_CONSTASCII_ACTION( sXML_user_index_source, "user-index-source" );
-XML_CONSTASCII_ACTION( sXML_user_transformed, "user-transformed" );
-XML_CONSTASCII_ACTION( sXML_username, "username");
-XML_CONSTASCII_ACTION( sXML_value, "value");
-XML_CONSTASCII_ACTION( sXML_value_type, "value-type");
-XML_CONSTASCII_ACTION( sXML_values_cell_range_address, "values-cell-range-address" );
-XML_CONSTASCII_ACTION( sXML_var, "var" );
-XML_CONSTASCII_ACTION( sXML_variable, "variable" );
-XML_CONSTASCII_ACTION( sXML_variable_decl, "variable-decl" );
-XML_CONSTASCII_ACTION( sXML_variable_decls, "variable-decls" );
-XML_CONSTASCII_ACTION( sXML_variable_get, "variable-get" );
-XML_CONSTASCII_ACTION( sXML_variable_input, "variable-input" );
-XML_CONSTASCII_ACTION( sXML_variable_set, "variable-set" );
-XML_CONSTASCII_ACTION( sXML_variance, "variance" );
-XML_CONSTASCII_ACTION( sXML_varp, "varp" );
-XML_CONSTASCII_ACTION( sXML_vector, "vector" );
-XML_CONSTASCII_ACTION( sXML_verb, "verb" );
-XML_CONSTASCII_ACTION( sXML_version, "version" );
-XML_CONSTASCII_ACTION( sXML_version_entry, "version-entry" );
-XML_CONSTASCII_ACTION( sXML_version_list, "version-list" );
-XML_CONSTASCII_ACTION( sXML_vertical, "vertical" );
-XML_CONSTASCII_ACTION( sXML_vertical_align, "vertical-align" );
-XML_CONSTASCII_ACTION( sXML_vertical_lines, "vertical-lines" );
-XML_CONSTASCII_ACTION( sXML_vertical_pos, "vertical-pos" );
-XML_CONSTASCII_ACTION( sXML_vertical_rel, "vertical-rel" );
-XML_CONSTASCII_ACTION( sXML_vertical_segments, "vertical-segments" );
-XML_CONSTASCII_ACTION( sXML_vertical_split_mode, "vertical-split-mode" );
-XML_CONSTASCII_ACTION( sXML_vertical_split_position, "vertical-split-position" );
-XML_CONSTASCII_ACTION( sXML_vertical_stripes, "vertical-stripes" );
-XML_CONSTASCII_ACTION( sXML_view, "view" );
-XML_CONSTASCII_ACTION( sXML_viewBox, "viewBox" );
-XML_CONSTASCII_ACTION( sXML_view_id, "view-id" );
-XML_CONSTASCII_ACTION( sXML_view_settings, "view-settings" );
-XML_CONSTASCII_ACTION( sXML_visibility, "visibility" );
-XML_CONSTASCII_ACTION( sXML_visible, "visible" );
-XML_CONSTASCII_ACTION( sXML_visible_area, "visible-area" );
-XML_CONSTASCII_ACTION( sXML_visible_area_height, "visible-area-height" );
-XML_CONSTASCII_ACTION( sXML_visible_area_left, "visible-area-left" );
-XML_CONSTASCII_ACTION( sXML_visible_area_top, "visible-area-top" );
-XML_CONSTASCII_ACTION( sXML_visible_area_width, "visible-area-width" );
-XML_CONSTASCII_ACTION( sXML_visited_style_name, "visited-style-name" );
-XML_CONSTASCII_ACTION( sXML_volatile, "volatile" );
-XML_CONSTASCII_ACTION( sXML_volume, "volume" );
-XML_CONSTASCII_ACTION( sXML_vpn, "vpn");
-XML_CONSTASCII_ACTION( sXML_vrp, "vrp");
-XML_CONSTASCII_ACTION( sXML_vup, "vup");
-XML_CONSTASCII_ACTION( sXML_wall, "wall" );
-XML_CONSTASCII_ACTION( sXML_warning, "warning" );
-XML_CONSTASCII_ACTION( sXML_watermark, "watermark" );
-XML_CONSTASCII_ACTION( sXML_wavyline_from_bottom, "wavyline-from-bottom" );
-XML_CONSTASCII_ACTION( sXML_wavyline_from_left, "wavyline-from-left" );
-XML_CONSTASCII_ACTION( sXML_wavyline_from_right, "wavyline-from-right" );
-XML_CONSTASCII_ACTION( sXML_wavyline_from_top, "wavyline-from-top" );
-XML_CONSTASCII_ACTION( sXML_week_of_year, "week-of-year" );
-XML_CONSTASCII_ACTION( sXML_weight_bold, "bold" );
-XML_CONSTASCII_ACTION( sXML_weight_normal, "normal" );
-XML_CONSTASCII_ACTION( sXML_white, "white" );
-XML_CONSTASCII_ACTION( sXML_whole_page, "whole-page" );
-XML_CONSTASCII_ACTION( sXML_widows, "widows" );
-XML_CONSTASCII_ACTION( sXML_width, "width" );
-XML_CONSTASCII_ACTION( sXML_word, "word" );
-XML_CONSTASCII_ACTION( sXML_word_count, "word-count" );
-XML_CONSTASCII_ACTION( sXML_wrap, "wrap" );
-XML_CONSTASCII_ACTION( sXML_wrap_contour, "wrap-contour" );
-XML_CONSTASCII_ACTION( sXML_wrap_contour_mode, "wrap-contour-mode" );
-XML_CONSTASCII_ACTION( sXML_wrap_option, "wrap-option" );
-XML_CONSTASCII_ACTION( sXML_writing_mode, "writing-mode" );
-XML_CONSTASCII_ACTION( sXML_www, "www" );
-XML_CONSTASCII_ACTION( sXML_x, "x" );
-XML_CONSTASCII_ACTION( sXML_x1, "x1" );
-XML_CONSTASCII_ACTION( sXML_x2, "x2" );
-XML_CONSTASCII_ACTION( sXML_x_mac_roman, "x-mac-roman" );
-XML_CONSTASCII_ACTION( sXML_x_symbol, "x-symbol" );
-XML_CONSTASCII_ACTION( sXML_x_system, "x-system" );
-XML_CONSTASCII_ACTION( sXML_xor, "xor" );
-XML_CONSTASCII_ACTION( sXML_y, "y" );
-XML_CONSTASCII_ACTION( sXML_y1, "y1" );
-XML_CONSTASCII_ACTION( sXML_y2, "y2" );
-XML_CONSTASCII_ACTION( sXML_year, "year" );
-XML_CONSTASCII_ACTION( sXML_yellow, "yellow" );
-XML_CONSTASCII_ACTION( sXML_zero_values, "zero-values" );
-XML_CONSTASCII_ACTION( sXML_zindex, "z-index" );
-XML_CONSTASCII_ACTION( sXML_zoom_type, "zoom-type" );
-XML_CONSTASCII_ACTION( sXML_zoom_value, "zoom-value" );
-
-XML_CONSTASCII_ACTION( sXML_start_shape, "start-shape");
-XML_CONSTASCII_ACTION( sXML_start_glue_point, "start-glue-point");
-XML_CONSTASCII_ACTION( sXML_end_shape, "end-shape");
-XML_CONSTASCII_ACTION( sXML_end_glue_point, "end-glue-point");
-XML_CONSTASCII_ACTION( sXML_line_number, "line-number");
-XML_CONSTASCII_ACTION( sXML_line_skew, "line-skew");
-XML_CONSTASCII_ACTION( sXML_curve, "curve" );
-XML_CONSTASCII_ACTION( sXML_start_line_spacing_horizontal, "start-line-spacing-horizontal" );
-XML_CONSTASCII_ACTION( sXML_start_line_spacing_vertical, "start-line-spacing-vertical" );
-XML_CONSTASCII_ACTION( sXML_end_line_spacing_horizontal, "end-line-spacing-horizontal" );
-XML_CONSTASCII_ACTION( sXML_end_line_spacing_vertical, "end-line-spacing-vertical" );
-XML_CONSTASCII_ACTION( sXML_line_distance, "line-distance" );
-XML_CONSTASCII_ACTION( sXML_guide_overhang, "guide-overhang" );
-XML_CONSTASCII_ACTION( sXML_guide_distance, "guide-distance" );
-XML_CONSTASCII_ACTION( sXML_start_guide, "start-guide" );
-XML_CONSTASCII_ACTION( sXML_end_guide, "end-guide" );
-
-XML_CONSTASCII_ACTION( sXML_dots1, "dots1" );
-XML_CONSTASCII_ACTION( sXML_dots1_length, "dots1-length" );
-XML_CONSTASCII_ACTION( sXML_dots2, "dots2" );
-XML_CONSTASCII_ACTION( sXML_dots2_length, "dots2-length" );
-XML_CONSTASCII_ACTION( sXML_enable_numbering, "enable-numbering" );
-
-XML_CONSTASCII_ACTION( sXML_top_left, "top-left" );
-XML_CONSTASCII_ACTION( sXML_top_right, "top-right" );
-XML_CONSTASCII_ACTION( sXML_bottom_left, "bottom-left" );
-XML_CONSTASCII_ACTION( sXML_bottom_right, "bottom-right" );
-
-XML_CONSTASCII_ACTION( sXML_fill_image_ref_point, "fill-image-ref-point" );
-XML_CONSTASCII_ACTION( sXML_fill_image_ref_point_x, "fill-image-ref-point-x" );
-XML_CONSTASCII_ACTION( sXML_fill_image_ref_point_y, "fill-image-ref-point-y" );
-
-XML_CONSTASCII_ACTION( sXML_from_right, "from-right" );
-XML_CONSTASCII_ACTION( sXML_from_bottom, "from-bottom" );
-XML_CONSTASCII_ACTION( sXML_from_center, "from-center" );
-XML_CONSTASCII_ACTION( sXML_from_upper_left, "from-upper-left" );
-XML_CONSTASCII_ACTION( sXML_from_upper_right, "from-upper-right" );
-XML_CONSTASCII_ACTION( sXML_from_lower_left, "from-lower-left" );
-XML_CONSTASCII_ACTION( sXML_from_lower_right, "from-lower-right" );
-XML_CONSTASCII_ACTION( sXML_to_left, "to-left" );
-XML_CONSTASCII_ACTION( sXML_to_top, "to-top" );
-XML_CONSTASCII_ACTION( sXML_to_right, "to-right" );
-XML_CONSTASCII_ACTION( sXML_to_bottom, "to-bottom" );
-XML_CONSTASCII_ACTION( sXML_to_upper_left, "to-upper-left" );
-XML_CONSTASCII_ACTION( sXML_to_upper_right, "to-upper-right" );
-XML_CONSTASCII_ACTION( sXML_to_lower_right, "to-lower-right" );
-XML_CONSTASCII_ACTION( sXML_to_lower_left, "to-lower-left" );
-XML_CONSTASCII_ACTION( sXML_to_center, "to-center" );
-XML_CONSTASCII_ACTION( sXML_counter_clockwise, "counter-clockwise" );
-
-XML_CONSTASCII_ACTION( sXML_fade, "fade" );
-XML_CONSTASCII_ACTION( sXML_move, "move" );
-XML_CONSTASCII_ACTION( sXML_stripes, "stripes" );
-XML_CONSTASCII_ACTION( sXML_spiral_inward_left, "spiral-inward-left" );
-XML_CONSTASCII_ACTION( sXML_spiral_inward_right, "spiral-inward-right" );
-XML_CONSTASCII_ACTION( sXML_spiral_outward_left, "spiral-outward-left" );
-XML_CONSTASCII_ACTION( sXML_spiral_outward_right, "spiral-outward-right" );
-XML_CONSTASCII_ACTION( sXML_spiral, "spiral" );
-XML_CONSTASCII_ACTION( sXML_spiral_in, "spiral-in" );
-XML_CONSTASCII_ACTION( sXML_spiral_out, "spiral-out" );
-XML_CONSTASCII_ACTION( sXML_wavyline, "wavyline" );
-XML_CONSTASCII_ACTION( sXML_laser, "laser" );
-XML_CONSTASCII_ACTION( sXML_appear, "appear" );
-XML_CONSTASCII_ACTION( sXML_hide, "hide" );
-XML_CONSTASCII_ACTION( sXML_move_short, "move-short" );
-XML_CONSTASCII_ACTION( sXML_checkerboard, "checkerboard" );
-XML_CONSTASCII_ACTION( sXML_stretch, "stretch" );
-
-XML_CONSTASCII_ACTION( sXML_shape_id, "shape-id" );
-XML_CONSTASCII_ACTION( sXML_effect, "effect" );
-XML_CONSTASCII_ACTION( sXML_speed, "speed" );
-XML_CONSTASCII_ACTION( sXML_start_scale, "start-scale" );
-XML_CONSTASCII_ACTION( sXML_show_shape, "show-shape" );
-XML_CONSTASCII_ACTION( sXML_show_text, "show-text" );
-XML_CONSTASCII_ACTION( sXML_hide_shape, "hide-shape" );
-XML_CONSTASCII_ACTION( sXML_hide_text, "hide-text" );
-XML_CONSTASCII_ACTION( sXML_dim, "dim" );
-XML_CONSTASCII_ACTION( sXML_sound, "sound" );
-XML_CONSTASCII_ACTION( sXML_play_full, "play-full" );
-XML_CONSTASCII_ACTION( sXML_path_id, "path-id" );
-
-XML_CONSTASCII_ACTION( sXML_animations, "animations" );
-
-XML_CONSTASCII_ACTION( sXML_kind, "kind" );
-XML_CONSTASCII_ACTION( sXML_start_angle, "start-angle" );
-XML_CONSTASCII_ACTION( sXML_cut, "cut" );
-XML_CONSTASCII_ACTION( sXML_arc, "arc" );
-
-XML_CONSTASCII_ACTION( sXML_upright, "upright" );
-XML_CONSTASCII_ACTION( sXML_slant_x, "slant-x" );
-XML_CONSTASCII_ACTION( sXML_slant_y, "slant-y" );
-XML_CONSTASCII_ACTION( sXML_autosize, "autosize" );
-XML_CONSTASCII_ACTION( sXML_slant, "slant" );
-XML_CONSTASCII_ACTION( sXML_topcircle, "top-circle" );
-XML_CONSTASCII_ACTION( sXML_bottomcircle, "bottom-circle" );
-XML_CONSTASCII_ACTION( sXML_leftcircle, "left-circle" );
-XML_CONSTASCII_ACTION( sXML_rightcircle, "right-circle" );
-XML_CONSTASCII_ACTION( sXML_toparc, "top-arc" );
-XML_CONSTASCII_ACTION( sXML_bottomarc, "bottom-arc" );
-XML_CONSTASCII_ACTION( sXML_leftarc, "left-arc" );
-XML_CONSTASCII_ACTION( sXML_rightarc, "right-arc" );
-XML_CONSTASCII_ACTION( sXML_button1, "button1" );
-XML_CONSTASCII_ACTION( sXML_button2, "button2" );
-XML_CONSTASCII_ACTION( sXML_button3, "button3" );
-XML_CONSTASCII_ACTION( sXML_button4, "button4" );
-
-XML_CONSTASCII_ACTION( sXML_caption_type, "caption-type" );
-XML_CONSTASCII_ACTION( sXML_caption_angle_type, "caption-angle-type" );
-XML_CONSTASCII_ACTION( sXML_caption_angle, "caption-angle" );
-XML_CONSTASCII_ACTION( sXML_caption_gap, "caption-gap" );
-XML_CONSTASCII_ACTION( sXML_caption_escape_direction, "caption-escape-direction" );
-XML_CONSTASCII_ACTION( sXML_caption_escape, "caption-escape" );
-XML_CONSTASCII_ACTION( sXML_caption_line_length, "caption-line-length" );
-XML_CONSTASCII_ACTION( sXML_caption_fit_line_length, "caption-fit-line-length" );
-XML_CONSTASCII_ACTION( sXML_free, "free" );
-
-XML_CONSTASCII_ACTION( sXML_straight_line, "straight-line" );
-XML_CONSTASCII_ACTION( sXML_angled_line, "angled-line" );
-XML_CONSTASCII_ACTION( sXML_angled_connector_line, "angled-connector-line" );
-
-XML_CONSTASCII_ACTION( sXML_data_source_has_labels, "data-source-has-labels" );
-
-XML_CONSTASCII_ACTION( sXML_play, "play" );
-XML_CONSTASCII_ACTION( sXML_handout_master, "handout-master" );
-
-XML_CONSTASCII_ACTION( sXML_escape_direction, "escape-direction" );
-XML_CONSTASCII_ACTION( sXML_glue_point, "glue-point" );
-
-XML_CONSTASCII_ACTION( sXML_text_style_name, "text-style-name" );
-
-XML_CONSTASCII_ACTION( sXML_sort_algorithm, "sort-algorithm" );
-XML_CONSTASCII_ACTION( sXML_roll_from_top, "roll-from-top" );
-
-XML_CONSTASCII_ACTION( sXML_script_data, "script-data" );
-XML_CONSTASCII_ACTION( sXML_libraries, "libraries" );
-XML_CONSTASCII_ACTION( sXML_source_code, "source-code" );
-XML_CONSTASCII_ACTION( sXML_readonly, "readonly" );
-
-XML_CONSTASCII_ACTION( sXML_page_continuation, "page-continuation" );
-
-XML_CONSTASCII_ACTION( sXML_contains, "contains" );
-XML_CONSTASCII_ACTION( sXML_does_not_contain, "does-not-contain" );
-XML_CONSTASCII_ACTION( sXML_begins_with, "begins-with" );
-XML_CONSTASCII_ACTION( sXML_does_not_begin_with, "does-not-begin-with" );
-XML_CONSTASCII_ACTION( sXML_ends_with, "ends-with" );
-XML_CONSTASCII_ACTION( sXML_does_not_end_with, "does-not-end-with" );
-
-#endif
diff --git a/xmloff/inc/xmloff/txtimp.hxx b/xmloff/inc/xmloff/txtimp.hxx
index 2cdbaffbbde3..02750f76dcc6 100644
--- a/xmloff/inc/xmloff/txtimp.hxx
+++ b/xmloff/inc/xmloff/txtimp.hxx
@@ -24,8 +24,8 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#ifndef _XMLOFF_TEXTIMP_HXX_
-#define _XMLOFF_TEXTIMP_HXX_
+#ifndef XMLOFF_TEXTIMP_HXX
+#define XMLOFF_TEXTIMP_HXX
#include "sal/config.h"
#include "xmloff/dllapi.h"
@@ -33,13 +33,11 @@
#include <com/sun/star/uno/Reference.h>
#include <map>
-#include <vector>
#include <memory>
#include <boost/utility.hpp>
+#include <boost/shared_ptr.hpp>
#include <tools/list.hxx>
-#include <xmloff/xmlictxt.hxx>
-#include <xmloff/xmlimppr.hxx>
#include <xmloff/xmltkmap.hxx>
// functional.hxx is obsolete and should be replaced by its comphelper
@@ -47,34 +45,44 @@
#include <comphelper/stl_types.hxx>
#include <xmloff/uniref.hxx>
+
// --> OD 2008-04-25 #refactorlists#
class XMLTextListsHelper;
// <--
-#include <com/sun/star/text/XFormField.hpp>
-
-
+class SvXMLImportContext;
+class SvXMLTokenMap;
+class SvXMLImportPropertyMapper;
+class SvXMLNamespaceMap;
class SvXMLImport;
class SvXMLStylesContext;
class XMLTextListBlockContext;
class SvxXMLListStyleContext;
class XMLPropStyleContext;
class SvI18NMap;
-class SvStringsDtor;
class XMLSectionImportContext;
class XMLFontStylesContext;
template<class A> class XMLPropertyBackpatcher;
class XMLEventsImportContext;
+namespace xmloff {
+ struct ParsedRDFaAttributes;
+}
+
namespace com { namespace sun { namespace star {
-namespace text { class XText; class XTextCursor; class XTextRange; class XTextContent; }
+namespace text {
+ class XText;
+ class XTextCursor;
+ class XTextRange;
+ class XTextContent;
+ class XFormField;
+}
namespace frame { class XModel; }
namespace container { class XNameContainer; class XIndexReplace; class XNameAccess; }
namespace beans { class XPropertySet; }
namespace xml { namespace sax { class XAttributeList; } }
namespace util { struct DateTime; }
namespace lang { class XMultiServiceFactory; }
-namespace ucb { class XAnyCompare; }
} } }
enum SwXMLTextElemTokens
@@ -378,127 +386,13 @@ DECLARE_LIST( XMLSectionList_Impl, XMLSectionImportContext* )
class XMLOFF_DLLPUBLIC XMLTextImportHelper : public UniRefBase,
private boost::noncopyable
{
- ::std::auto_ptr<SvXMLTokenMap> pTextElemTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextPElemTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextPAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextFieldAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextNumberedParagraphAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextListBlockAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextListBlockElemTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextFrameAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextContourAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextHyperlinkAttrTokenMap;
- ::std::auto_ptr<SvXMLTokenMap> pTextMasterPageElemTokenMap;
- ::std::auto_ptr<SvStringsDtor> pPrevFrmNames;
- ::std::auto_ptr<SvStringsDtor> pNextFrmNames;
-
- // --> OD 2008-04-25 #refactorlists#
- ::std::auto_ptr<XMLTextListsHelper> mpTextListsHelper;
- // <--
-
- SvXMLImportContextRef xAutoStyles;
- SvXMLImportContextRef xFontDecls;
-
- XMLSectionList_Impl aSectionList;
-
- UniReference < SvXMLImportPropertyMapper > xParaImpPrMap;
- UniReference < SvXMLImportPropertyMapper > xTextImpPrMap;
- UniReference < SvXMLImportPropertyMapper > xFrameImpPrMap;
- UniReference < SvXMLImportPropertyMapper > xSectionImpPrMap;
- UniReference < SvXMLImportPropertyMapper > xRubyImpPrMap;
-
- ::std::auto_ptr<SvI18NMap> pRenameMap;
- // --> OD 2006-10-12 #i69629# - change and extend data structure:
- // - data structure contains candidates of paragraph styles, which
- // will be assigned to the outline style
- // - data structure contains more than one candidate for each list level
- // of the outline style
-// ::rtl::OUString *pOutlineStyles;
- ::std::vector< ::rtl::OUString >* mpOutlineStylesCandidates;
- // <--
-
- /// start ranges for open bookmarks
- ::std::map< ::rtl::OUString,
- // start range, xml:id
- ::std::pair<
- ::com::sun::star::uno::Reference<
- ::com::sun::star::text::XTextRange>,
- ::rtl::OUString>,
- ::comphelper::UStringLess> aBookmarkStartRanges;
-
- typedef ::std::vector< ::rtl::OUString> BookmarkVector_t;
- BookmarkVector_t aBookmarkVector;
-
- /// backpatcher for references to footnotes and endnotes
- XMLPropertyBackpatcher<sal_Int16> * pFootnoteBackpatcher;
-
- /// backpatchers for references to sequences
- XMLPropertyBackpatcher<sal_Int16> * pSequenceIdBackpatcher;
-
- XMLPropertyBackpatcher< ::rtl::OUString> * pSequenceNameBackpatcher;
-
- /// name of the last 'open' redline that started between paragraphs
- ::rtl::OUString sOpenRedlineIdentifier;
-
- ::com::sun::star::uno::Reference <
- ::com::sun::star::text::XText > xText;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::text::XTextCursor > xCursor;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::text::XTextRange > xCursorAsRange;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer > xParaStyles;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer > xTextStyles;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer > xNumStyles;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer > xFrameStyles;
- ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer > xPageStyles;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::container::XIndexReplace > xChapterNumbering;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::container::XNameAccess > xTextFrames;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::container::XNameAccess > xGraphics;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::container::XNameAccess > xObjects;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory > xServiceFactory;
-
- SvXMLImport& rSvXMLImport;
-
- sal_Bool bInsertMode : 1;
- sal_Bool bStylesOnlyMode : 1;
- sal_Bool bBlockMode : 1;
- sal_Bool bProgress : 1;
- sal_Bool bOrganizerMode : 1;
- sal_Bool bBodyContentStarted : 1;
-
- // #107848#
- // One more flag to remember if we are inside a deleted redline section
- sal_Bool bInsideDeleteContext : 1;
-
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextElemTokenMap();
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextPElemTokenMap();
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextPAttrTokenMap();
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextFrameAttrTokenMap();
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextContourAttrTokenMap();
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextHyperlinkAttrTokenMap();
- SAL_DLLPRIVATE SvXMLTokenMap *_GetTextMasterPageElemTokenMap();
-
- // clean up backpatchers; to be called only by destructor
- // Code is implemented in XMLPropertyBackpatcher.cxx
- SAL_DLLPRIVATE void _FinitBackpatcher();
-
- typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t;
- typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t;
- typedef ::std::vector< field_param_t > field_params_t;
- typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t;
- typedef ::std::stack< field_stack_item_t > field_stack_t;
-
- field_stack_t aFieldStack;
+private:
+ struct Impl;
+ ::std::auto_ptr<Impl> m_pImpl;
+ /// ugly, but implementation of this is in XMLPropertyBackpatcher.cxx
+ struct BackpatcherImpl;
+ ::boost::shared_ptr<BackpatcherImpl> m_pBackpatcherImpl;
+ ::boost::shared_ptr<BackpatcherImpl> MakeBackpatcherImpl();
protected:
virtual SvXMLImportContext *CreateTableChildContext(
@@ -515,46 +409,13 @@ protected:
public:
- const ::rtl::OUString sParaStyleName;
- const ::rtl::OUString sCharStyleName;
- const ::rtl::OUString sHeadingStyleName;
- const ::rtl::OUString sNumberingLevel;
- const ::rtl::OUString sNumberingStartValue;
- const ::rtl::OUString sNumberingRules;
- const ::rtl::OUString sParaIsNumberingRestart;
- const ::rtl::OUString sNumberingIsNumber;
- const ::rtl::OUString sCurrentPresentation;
- const ::rtl::OUString sSequenceNumber;
- const ::rtl::OUString sSourceName;
- const ::rtl::OUString sChainNextName;
- const ::rtl::OUString sChainPrevName;
- const ::rtl::OUString sHyperLinkURL;
- const ::rtl::OUString sHyperLinkName;
- const ::rtl::OUString sHyperLinkTarget;
- const ::rtl::OUString sUnvisitedCharStyleName;
- const ::rtl::OUString sVisitedCharStyleName;
- const ::rtl::OUString sTextFrame;
- const ::rtl::OUString sPageDescName;
- const ::rtl::OUString sServerMap;
- const ::rtl::OUString sHyperLinkEvents;
- const ::rtl::OUString sContent;
- const ::rtl::OUString sServiceCombinedCharacters;
- const ::rtl::OUString sNumberingStyleName;
- // --> OD 2008-04-23 #refactorlists#
- const ::rtl::OUString sPropNameDefaultListId;
- const ::rtl::OUString sPropNameListId;
- const ::rtl::OUString sOutlineLevel; //#outline level,add by zhaojianwei
- // <--
-
- ::rtl::OUString sCellParaStyleDefault;
XMLTextImportHelper(
- const ::com::sun::star::uno::Reference <
- ::com::sun::star::frame::XModel>& rModel,
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::frame::XModel> const& rModel,
SvXMLImport& rImport,
- sal_Bool bInsertM = sal_False, sal_Bool bStylesOnlyM = sal_False,
- sal_Bool bProgress = sal_False,
- sal_Bool bBlockMode = sal_False,
- sal_Bool bOrganizerMode = sal_False );
+ bool const bInsertMode = false, bool const bStylesOnlyMode = false,
+ bool const bProgress = false, bool const bBlockMode = false,
+ bool const bOrganizerMode = false);
~XMLTextImportHelper();
@@ -575,36 +436,33 @@ public:
::com::sun::star::xml::sax::XAttributeList > & xAttrList,
XMLTextType eType = XML_TEXT_TYPE_SHAPE );
- inline const SvXMLTokenMap& GetTextElemTokenMap();
- inline const SvXMLTokenMap& GetTextPElemTokenMap();
- inline const SvXMLTokenMap& GetTextPAttrTokenMap();
- inline const SvXMLTokenMap& GetTextFrameAttrTokenMap();
- inline const SvXMLTokenMap& GetTextContourAttrTokenMap();
- inline const SvXMLTokenMap& GetTextHyperlinkAttrTokenMap();
- inline const SvXMLTokenMap& GetTextMasterPageElemTokenMap();
+ SvXMLTokenMap const& GetTextElemTokenMap();
+ SvXMLTokenMap const& GetTextPElemTokenMap();
+ SvXMLTokenMap const& GetTextPAttrTokenMap();
+ SvXMLTokenMap const& GetTextFrameAttrTokenMap();
+ SvXMLTokenMap const& GetTextContourAttrTokenMap();
+ SvXMLTokenMap const& GetTextHyperlinkAttrTokenMap();
+ SvXMLTokenMap const& GetTextMasterPageElemTokenMap();
const SvXMLTokenMap& GetTextNumberedParagraphAttrTokenMap();
const SvXMLTokenMap& GetTextListBlockAttrTokenMap();
const SvXMLTokenMap& GetTextListBlockElemTokenMap();
const SvXMLTokenMap& GetTextFieldAttrTokenMap(); // impl: txtfldi.cxx
- ::com::sun::star::uno::Reference <
- ::com::sun::star::text::XText > & GetText() { return xText; }
- ::com::sun::star::uno::Reference <
- ::com::sun::star::text::XTextCursor > & GetCursor() { return xCursor; }
- ::com::sun::star::uno::Reference <
- ::com::sun::star::text::XTextRange > & GetCursorAsRange()
- {
- return xCursorAsRange;
- }
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XText > & GetText();
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextCursor > & GetCursor();
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange > & GetCursorAsRange();
- sal_Bool IsInsertMode() { return bInsertMode; }
- sal_Bool IsStylesOnlyMode() { return bStylesOnlyMode; }
- sal_Bool IsBlockMode() { return bBlockMode; }
- sal_Bool IsOrganizerMode() { return bOrganizerMode; }
- sal_Bool IsProgress() { return bProgress; }
+ bool IsInsertMode() const;
+ bool IsStylesOnlyMode() const;
+ bool IsBlockMode() const;
+ bool IsOrganizerMode() const;
+ bool IsProgress() const;
- XMLSectionList_Impl& GetSectionList() { return aSectionList; }
+ XMLSectionList_Impl & GetSectionList();
::rtl::OUString ConvertStarFonts( const ::rtl::OUString& rChars,
const ::rtl::OUString& rStyleName,
@@ -686,41 +544,25 @@ public:
XMLPropStyleContext* FindPageMaster(
const ::rtl::OUString& rName ) const;
- const ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer>& GetParaStyles() const
- {
- return xParaStyles;
- }
-
- const ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer>& GetTextStyles() const
- {
- return xTextStyles;
- }
-
- const ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer>& GetNumberingStyles() const
- {
- return xNumStyles;
- }
-
- const ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer>& GetFrameStyles() const
- {
- return xFrameStyles;
- }
-
- const ::com::sun::star::uno::Reference <
- ::com::sun::star::container::XNameContainer>& GetPageStyles() const
- {
- return xPageStyles;
- }
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XNameContainer> & GetParaStyles() const;
+
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XNameContainer> & GetTextStyles() const;
+
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XNameContainer> &
+ GetNumberingStyles() const;
const ::com::sun::star::uno::Reference<
- ::com::sun::star::container::XIndexReplace >& GetChapterNumbering() const
- {
- return xChapterNumbering;
- }
+ ::com::sun::star::container::XNameContainer> & GetFrameStyles() const;
+
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XNameContainer> & GetPageStyles() const;
+
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XIndexReplace > &
+ GetChapterNumbering() const;
sal_Bool HasFrameByName( const ::rtl::OUString& rName ) const;
void ConnectFrameChains( const ::rtl::OUString& rFrmName,
@@ -728,16 +570,17 @@ public:
const ::com::sun::star::uno::Reference <
::com::sun::star::beans::XPropertySet >& rFrmPropSet );
- const UniReference < SvXMLImportPropertyMapper >&
- GetParaImportPropertySetMapper() const { return xParaImpPrMap; }
- const UniReference < SvXMLImportPropertyMapper >&
- GetTextImportPropertySetMapper() const { return xTextImpPrMap; }
- const UniReference < SvXMLImportPropertyMapper >&
- GetFrameImportPropertySetMapper() const { return xFrameImpPrMap; }
- const UniReference < SvXMLImportPropertyMapper >&
- GetSectionImportPropertySetMapper() const { return xSectionImpPrMap; }
- const UniReference < SvXMLImportPropertyMapper >&
- GetRubyImportPropertySetMapper() const { return xRubyImpPrMap; }
+ UniReference< SvXMLImportPropertyMapper > const&
+ GetParaImportPropertySetMapper() const;
+ UniReference< SvXMLImportPropertyMapper > const&
+ GetTextImportPropertySetMapper() const;
+ UniReference< SvXMLImportPropertyMapper > const&
+ GetFrameImportPropertySetMapper() const;
+ UniReference< SvXMLImportPropertyMapper > const&
+ GetSectionImportPropertySetMapper() const;
+ UniReference< SvXMLImportPropertyMapper > const&
+ GetRubyImportPropertySetMapper() const;
+
static SvXMLImportPropertyMapper *CreateShapeExtPropMapper(SvXMLImport&);
static SvXMLImportPropertyMapper *CreateCharExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL);
static SvXMLImportPropertyMapper *CreateParaExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL);
@@ -757,14 +600,18 @@ public:
const ::rtl::OUString sName,
const ::com::sun::star::uno::Reference<
::com::sun::star::text::XTextRange> & rRange,
- const ::rtl::OUString & i_rXmlId);
+ ::rtl::OUString const& i_rXmlId,
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > &
+ i_rpRDFaAttributes);
/// process the start of a range reference
sal_Bool FindAndRemoveBookmarkStartRange(
const ::rtl::OUString sName,
::com::sun::star::uno::Reference<
::com::sun::star::text::XTextRange> & o_rRange,
- ::rtl::OUString& o_rXmlId);
+ ::rtl::OUString & o_rXmlId,
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > &
+ o_rpRDFaAttributes);
::rtl::OUString FindActiveBookmarkName();
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > GetRangeFor(::rtl::OUString &sName);
@@ -889,13 +736,13 @@ public:
// #107848#
// Access methods to the inside_deleted_section flag (redlining)
- void SetInsideDeleteContext(sal_Bool bNew) { bInsideDeleteContext = bNew; }
- sal_Bool IsInsideDeleteContext() const { return bInsideDeleteContext; }
+ void SetInsideDeleteContext(bool const bNew);
+ bool IsInsideDeleteContext() const;
- SvXMLImport& GetXMLImport() { return rSvXMLImport;}
+ SvXMLImport & GetXMLImport();
// --> OD 2008-04-25 #refactorlists#
- XMLTextListsHelper& GetTextListHelper() { return *mpTextListsHelper; }
+ XMLTextListsHelper & GetTextListHelper();
// <--
// forwards to TextListHelper; these are used in many places
@@ -903,62 +750,9 @@ public:
void PushListContext(XMLTextListBlockContext *i_pListBlock = 0);
/// pop the list context stack
void PopListContext();
-};
-
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap()
-{
- if( !pTextElemTokenMap.get() )
- pTextElemTokenMap.reset( _GetTextElemTokenMap() );
-
- return *pTextElemTokenMap;
-}
-
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap()
-{
- if( !pTextPElemTokenMap.get() )
- pTextPElemTokenMap.reset( _GetTextPElemTokenMap() );
-
- return *pTextPElemTokenMap;
-}
-
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap()
-{
- if( !pTextPAttrTokenMap.get() )
- pTextPAttrTokenMap.reset( _GetTextPAttrTokenMap() );
-
- return *pTextPAttrTokenMap;
-}
-
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap()
-{
- if( !pTextFrameAttrTokenMap.get() )
- pTextFrameAttrTokenMap.reset( _GetTextFrameAttrTokenMap() );
-
- return *pTextFrameAttrTokenMap;
-}
-
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap()
-{
- if( !pTextContourAttrTokenMap.get() )
- pTextContourAttrTokenMap.reset( _GetTextContourAttrTokenMap() );
-
- return *pTextContourAttrTokenMap;
-}
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap()
-{
- if( !pTextHyperlinkAttrTokenMap.get() )
- pTextHyperlinkAttrTokenMap.reset( _GetTextHyperlinkAttrTokenMap() );
-
- return *pTextHyperlinkAttrTokenMap;
-}
-
-inline const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap()
-{
- if( !pTextMasterPageElemTokenMap.get() )
- pTextMasterPageElemTokenMap.reset( _GetTextMasterPageElemTokenMap() );
-
- return *pTextMasterPageElemTokenMap;
-}
+ void SetCellParaStyleDefault(::rtl::OUString const& rNewValue);
+ ::rtl::OUString const& GetCellParaStyleDefault();
+};
#endif
diff --git a/xmloff/inc/xmloff/xmlimp.hxx b/xmloff/inc/xmloff/xmlimp.hxx
index 44e5357ebbdd..871703bf9ed7 100644
--- a/xmloff/inc/xmloff/xmlimp.hxx
+++ b/xmloff/inc/xmloff/xmlimp.hxx
@@ -77,6 +77,10 @@ class XMLErrors;
class StyleMap;
class String;
+namespace xmloff {
+ class RDFaImportHelper;
+}
+
#define IMPORT_META 0x0001
#define IMPORT_STYLES 0x0002
#define IMPORT_MASTERSTYLES 0x0004
@@ -432,6 +436,9 @@ public:
::rtl::OUString const & i_rContent,
::rtl::OUString const & i_rDatatype);
+ /// do not dllexport this; only for advanced cases (bookmark-start)
+ SAL_DLLPRIVATE ::xmloff::RDFaImportHelper & GetRDFaImportHelper();
+
// #i31958# XForms helper method
// (to be implemented by applications suporting XForms)
virtual void initXForms();
diff --git a/xmloff/prj/d.lst b/xmloff/prj/d.lst
index 0b51b0dd97cb..7784bca0474f 100644
--- a/xmloff/prj/d.lst
+++ b/xmloff/prj/d.lst
@@ -21,7 +21,6 @@ mkdir: %_DEST%\inc%_EXT%\xmloff
..\inc\xmloff\xmlement.hxx %_DEST%\inc%_EXT%\xmloff\xmlement.hxx
..\inc\xmloff\xmlictxt.hxx %_DEST%\inc%_EXT%\xmloff\xmlictxt.hxx
..\inc\xmloff\xmlimp.hxx %_DEST%\inc%_EXT%\xmloff\xmlimp.hxx
-..\inc\xmlkywd.hxx %_DEST%\inc%_EXT%\xmloff\xmlkywd.hxx
..\inc\xmloff\xmlmetae.hxx %_DEST%\inc%_EXT%\xmloff\xmlmetae.hxx
..\inc\xmloff\xmlmetai.hxx %_DEST%\inc%_EXT%\xmloff\xmlmetai.hxx
..\inc\xmloff\xmlscripti.hxx %_DEST%\inc%_EXT%\xmloff\xmlscripti.hxx
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index 9940f99d9f7a..8154d284f628 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -649,7 +649,12 @@ lcl_TableData lcl_getDataForLocalTable(
SchXMLExportHelper::tDataSequenceCont::const_iterator aIt( aBegin );
size_t nMaxSequenceLength( lcl_getMaxSequenceLength( aSequencesToExport ));
- nMaxSequenceLength = std::max( nMaxSequenceLength, size_t( aSimpleCategories.getLength() ) );
+ size_t nCategoriesLength( aSimpleCategories.getLength() );
+ if( nCategoriesLength > nMaxSequenceLength )
+ {
+ aSimpleCategories.realloc(nMaxSequenceLength);//#i110617#
+ nCategoriesLength = nMaxSequenceLength;
+ }
size_t nNumColumns( bSeriesFromColumns ? nNumSequences : nMaxSequenceLength );
size_t nNumRows( bSeriesFromColumns ? nMaxSequenceLength : nNumSequences );
@@ -1084,6 +1089,7 @@ void SchXMLExportHelper::parseDocument( Reference< chart::XChartDocument >& rCha
aDataProviderURL = OUString( RTL_CONSTASCII_USTRINGPARAM( "." ) );
}
mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, aDataProviderURL );
+ mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
}
OUString sChartType( xDiagram->getDiagramType() );
diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx
index 53a32b9193e5..ec5c4b2130c1 100644
--- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx
+++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx
@@ -1271,6 +1271,10 @@ void SchXMLAxisContext::CreateAxis()
// set properties
if( xProp.is())
{
+ // #i109879# the line color is black as default, in the model it is a light gray
+ xProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LineColor" )),
+ uno::makeAny( COL_BLACK ));
+
xProp->setPropertyValue( rtl::OUString::createFromAscii( "DisplayLabels" ), aFalseBool );
// #88077# AutoOrigin 'on' is default
diff --git a/xmloff/source/chart/SchXMLSeries2Context.cxx b/xmloff/source/chart/SchXMLSeries2Context.cxx
index 91c2bc1b9b4a..86e9693ee225 100644
--- a/xmloff/source/chart/SchXMLSeries2Context.cxx
+++ b/xmloff/source/chart/SchXMLSeries2Context.cxx
@@ -39,7 +39,6 @@
#include <com/sun/star/chart2/XRegressionCurve.hpp>
#include <com/sun/star/chart2/data/XDataSink.hpp>
#include <com/sun/star/chart2/data/XDataReceiver.hpp>
-#include <com/sun/star/chart2/data/XRangeXMLConversion.hpp>
#include <com/sun/star/chart/ChartAxisAssign.hpp>
#include <com/sun/star/chart/ChartSymbolType.hpp>
@@ -78,15 +77,6 @@ using ::rtl::OUStringBuffer;
namespace
{
-OUString lcl_ConvertRange( const ::rtl::OUString & rRange, const Reference< chart2::data::XDataProvider >& xDataProvider )
-{
- OUString aResult = rRange;
- Reference< chart2::data::XRangeXMLConversion > xConversion( xDataProvider, uno::UNO_QUERY );
- if( xConversion.is())
- aResult = xConversion->convertRangeFromXML( rRange );
- return aResult;
-}
-
class SchXMLDomain2Context : public SvXMLImportContext
{
private:
@@ -232,7 +222,7 @@ void lcl_insertErrorBarLSequencesToMap(
Reference< chart2::data::XLabeledDataSequence > lcl_createAndAddSequenceToSeries( const rtl::OUString& rRole
, const rtl::OUString& rRange
- , const Reference< chart2::data::XDataProvider >& xDataProvider
+ , const Reference< chart2::XChartDocument >& xChartDoc
, const Reference< chart2::XDataSeries >& xSeries )
{
Reference< chart2::data::XLabeledDataSequence > xLabeledSeq;
@@ -240,27 +230,14 @@ Reference< chart2::data::XLabeledDataSequence > lcl_createAndAddSequenceToSeries
Reference< chart2::data::XDataSource > xSeriesSource( xSeries,uno::UNO_QUERY );
Reference< chart2::data::XDataSink > xSeriesSink( xSeries, uno::UNO_QUERY );
- if( !(rRange.getLength() && xDataProvider.is() && xSeriesSource.is() && xSeriesSink.is()) )
+ if( !(rRange.getLength() && xChartDoc.is() && xSeriesSource.is() && xSeriesSink.is()) )
return xLabeledSeq;
// create a new sequence
xLabeledSeq = SchXMLTools::GetNewLabeledDataSequence();
// set values at the new sequence
- Reference< chart2::data::XDataSequence > xSeq;
- try
- {
- xSeq.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider )));
- SchXMLTools::setXMLRangePropertyAtDataSequence( xSeq, rRange );
- }
- catch( const lang::IllegalArgumentException & ex )
- {
- (void)ex; // avoid warning for pro build
- OSL_ENSURE( false, ::rtl::OUStringToOString(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IllegalArgumentException caught, Message: " )) +
- ex.Message, RTL_TEXTENCODING_ASCII_US ).getStr());
- }
-
+ Reference< chart2::data::XDataSequence > xSeq = SchXMLTools::CreateDataSequence( rRange, xChartDoc );
Reference< beans::XPropertySet > xSeqProp( xSeq, uno::UNO_QUERY );
if( xSeqProp.is())
xSeqProp->setPropertyValue(OUString::createFromAscii("Role"), uno::makeAny( rRole));
@@ -336,10 +313,6 @@ void SchXMLSeries2Context::StartElement( const uno::Reference< xml::sax::XAttrib
bool bHasRange = false;
bool bHasLabelRange = false;
- Reference< chart2::data::XRangeXMLConversion > xRangeConversion;
- if( mxNewDoc.is())
- xRangeConversion.set( mxNewDoc->getDataProvider(), uno::UNO_QUERY );
-
for( sal_Int16 i = 0; i < nAttrCount; i++ )
{
rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
@@ -401,123 +374,93 @@ void SchXMLSeries2Context::StartElement( const uno::Reference< xml::sax::XAttrib
try
{
OSL_ASSERT( mxNewDoc.is());
- if( mxNewDoc.is())
- {
- if( m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable && ! bHasRange )
- m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable = sal_False;
+ if( m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable && ! bHasRange )
+ m_rGlobalSeriesImportInfo.rbAllRangeAddressesAvailable = sal_False;
- Reference< chart2::data::XDataProvider > xDataProvider( mxNewDoc->getDataProvider() );
- if( xDataProvider.is())
+ bool bIsCandleStick = maGlobalChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType"));
+ if( maSeriesChartTypeName.getLength() )
+ {
+ bIsCandleStick = maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType"));
+ }
+ else
+ {
+ if( bIsCandleStick
+ && m_bStockHasVolume
+ && mnSeriesIndex == 0 )
{
- bool bIsCandleStick = maGlobalChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType"));
- if( maSeriesChartTypeName.getLength() )
- {
- bIsCandleStick = maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.CandleStickChartType"));
- }
- else
- {
- if( bIsCandleStick
- && m_bStockHasVolume
- && mnSeriesIndex == 0 )
- {
- maSeriesChartTypeName = OUString::createFromAscii( "com.sun.star.chart2.ColumnChartType" );
- bIsCandleStick = false;
- }
- else
- {
- maSeriesChartTypeName = maGlobalChartTypeName;
- }
- }
- if( ! mrGlobalChartTypeUsedBySeries )
- mrGlobalChartTypeUsedBySeries = (maSeriesChartTypeName.equals( maGlobalChartTypeName ));
- sal_Int32 nCoordinateSystemIndex = 0;//so far we can only import one coordinate system
- m_xSeries.set(
- mrImportHelper.GetNewDataSeries( mxNewDoc, nCoordinateSystemIndex, maSeriesChartTypeName, ! mrGlobalChartTypeUsedBySeries ));
- Reference< chart2::data::XLabeledDataSequence > xLabeledSeq(
- SchXMLTools::GetNewLabeledDataSequence());
-
- if( bIsCandleStick )
- {
- // set default color for range-line to black (before applying styles)
- Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY );
- if( xSeriesProp.is())
- xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Color")),
- uno::makeAny( sal_Int32( 0x000000 ))); // black
- }
- else if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.PieChartType")))
- {
- //@todo: this property should be saved
- Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY );
- if( xSeriesProp.is())
- xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VaryColorsByPoint")),
- uno::makeAny( true ));
- }
+ maSeriesChartTypeName = OUString::createFromAscii( "com.sun.star.chart2.ColumnChartType" );
+ bIsCandleStick = false;
+ }
+ else
+ {
+ maSeriesChartTypeName = maGlobalChartTypeName;
+ }
+ }
+ if( ! mrGlobalChartTypeUsedBySeries )
+ mrGlobalChartTypeUsedBySeries = (maSeriesChartTypeName.equals( maGlobalChartTypeName ));
+ sal_Int32 nCoordinateSystemIndex = 0;//so far we can only import one coordinate system
+ m_xSeries.set(
+ mrImportHelper.GetNewDataSeries( mxNewDoc, nCoordinateSystemIndex, maSeriesChartTypeName, ! mrGlobalChartTypeUsedBySeries ));
+ Reference< chart2::data::XLabeledDataSequence > xLabeledSeq(
+ SchXMLTools::GetNewLabeledDataSequence());
+
+ if( bIsCandleStick )
+ {
+ // set default color for range-line to black (before applying styles)
+ Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY );
+ if( xSeriesProp.is())
+ xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Color")),
+ uno::makeAny( sal_Int32( 0x000000 ))); // black
+ }
+ else if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.PieChartType")))
+ {
+ //@todo: this property should be saved
+ Reference< beans::XPropertySet > xSeriesProp( m_xSeries, uno::UNO_QUERY );
+ if( xSeriesProp.is())
+ xSeriesProp->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VaryColorsByPoint")),
+ uno::makeAny( true ));
+ }
- // values
- Reference< chart2::data::XDataSequence > xSeq;
- if( bHasRange )
- try
- {
- xSeq.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( m_aSeriesRange, xDataProvider )));
- SchXMLTools::setXMLRangePropertyAtDataSequence( xSeq, m_aSeriesRange );
- }
- catch( const lang::IllegalArgumentException & ex )
- {
- (void)ex; // avoid warning for pro build
- OSL_ENSURE( false, ::rtl::OUStringToOString(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IllegalArgumentException caught, Message: " )) +
- ex.Message, RTL_TEXTENCODING_ASCII_US ).getStr());
- }
+ // values
+ Reference< chart2::data::XDataSequence > xSeq;
+ if( bHasRange )
+ xSeq = SchXMLTools::CreateDataSequence( m_aSeriesRange, mxNewDoc );
- Reference< beans::XPropertySet > xSeqProp( xSeq, uno::UNO_QUERY );
- if( xSeqProp.is())
- {
- OUString aMainRole( OUString::createFromAscii("values-y") );
- if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.BubbleChartType") ) )
- aMainRole = OUString::createFromAscii("values-size");
- xSeqProp->setPropertyValue(OUString::createFromAscii("Role"), uno::makeAny( aMainRole ));
- }
- xLabeledSeq->setValues( xSeq );
+ Reference< beans::XPropertySet > xSeqProp( xSeq, uno::UNO_QUERY );
+ if( xSeqProp.is())
+ {
+ OUString aMainRole( OUString::createFromAscii("values-y") );
+ if( maSeriesChartTypeName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.chart2.BubbleChartType") ) )
+ aMainRole = OUString::createFromAscii("values-size");
+ xSeqProp->setPropertyValue(OUString::createFromAscii("Role"), uno::makeAny( aMainRole ));
+ }
+ xLabeledSeq->setValues( xSeq );
- // register for setting local data if external data provider is not present
- maPostponedSequences.insert(
- tSchXMLLSequencesPerIndex::value_type(
- tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_VALUES ), xLabeledSeq ));
+ // register for setting local data if external data provider is not present
+ maPostponedSequences.insert(
+ tSchXMLLSequencesPerIndex::value_type(
+ tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_VALUES ), xLabeledSeq ));
- // label
- if( bHasLabelRange )
- {
- try
- {
- Reference< chart2::data::XDataSequence > xLabelSequence(
- xDataProvider->createDataSequenceByRangeRepresentation(
- lcl_ConvertRange( m_aSeriesLabelRange, xDataProvider )));
- xLabeledSeq->setLabel( xLabelSequence );
- SchXMLTools::setXMLRangePropertyAtDataSequence( xLabelSequence, m_aSeriesLabelRange );
- }
- catch( const lang::IllegalArgumentException & ex )
- {
- (void)ex; // avoid warning for pro build
- OSL_ENSURE( false, ::rtl::OUStringToOString(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IllegalArgumentException caught, Message: " )) +
- ex.Message, RTL_TEXTENCODING_ASCII_US ).getStr());
- }
- }
+ // label
+ if( bHasLabelRange )
+ {
+ Reference< chart2::data::XDataSequence > xLabelSequence =
+ SchXMLTools::CreateDataSequence( m_aSeriesLabelRange, mxNewDoc );
+ xLabeledSeq->setLabel( xLabelSequence );
+ }
- // Note: Even if we have no label, we have to register the label
- // for creation, because internal data always has labels. If
- // they don't exist in the original, auto-generated labels are
- // used for the internal data.
- maPostponedSequences.insert(
- tSchXMLLSequencesPerIndex::value_type(
- tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_LABEL ), xLabeledSeq ));
+ // Note: Even if we have no label, we have to register the label
+ // for creation, because internal data always has labels. If
+ // they don't exist in the original, auto-generated labels are
+ // used for the internal data.
+ maPostponedSequences.insert(
+ tSchXMLLSequencesPerIndex::value_type(
+ tSchXMLIndexWithPart( m_rGlobalSeriesImportInfo.nCurrentDataIndex, SCH_XML_PART_LABEL ), xLabeledSeq ));
- Sequence< Reference< chart2::data::XLabeledDataSequence > > aSeq( &xLabeledSeq, 1 );
- Reference< chart2::data::XDataSink > xSink( m_xSeries, uno::UNO_QUERY_THROW );
- xSink->setData( aSeq );
- }
- }
+ Sequence< Reference< chart2::data::XLabeledDataSequence > > aSeq( &xLabeledSeq, 1 );
+ Reference< chart2::data::XDataSink > xSink( m_xSeries, uno::UNO_QUERY_THROW );
+ xSink->setData( aSeq );
}
catch( uno::Exception & ex )
{
@@ -662,15 +605,11 @@ void SchXMLSeries2Context::EndElement()
}
}
- Reference< chart2::data::XDataProvider > xDataProvider;
- if ( mxNewDoc.is() ) {
- xDataProvider = mxNewDoc->getDataProvider();
- }
for( std::vector< DomainInfo >::reverse_iterator aIt( aDomainInfos.rbegin() ); aIt!= aDomainInfos.rend(); ++aIt )
{
DomainInfo aDomainInfo( *aIt );
Reference< chart2::data::XLabeledDataSequence > xLabeledSeq =
- lcl_createAndAddSequenceToSeries( aDomainInfo.aRole, aDomainInfo.aRange, xDataProvider, m_xSeries );
+ lcl_createAndAddSequenceToSeries( aDomainInfo.aRole, aDomainInfo.aRange, mxNewDoc, m_xSeries );
if( xLabeledSeq.is() )
{
// register for setting local data if external data provider is not present
diff --git a/xmloff/source/chart/SchXMLTableContext.cxx b/xmloff/source/chart/SchXMLTableContext.cxx
index 6ba9a49e4502..d82970858ebe 100644
--- a/xmloff/source/chart/SchXMLTableContext.cxx
+++ b/xmloff/source/chart/SchXMLTableContext.cxx
@@ -161,6 +161,11 @@ struct lcl_ApplyCellToData : public ::std::unary_function< SchXMLCell, void >
++m_nIndex;
}
+ sal_Int32 getCurrentIndex() const
+ {
+ return m_nIndex;
+ }
+
private:
Sequence< double > & m_rData;
sal_Int32 m_nIndex;
@@ -865,7 +870,12 @@ void SchXMLTableHelper::applyTableToInternalDataProvider(
lcl_ApplyCellToComplexLabel( rRow.front(), aComplexRowDescriptions[nRow] );
// values
- ::std::for_each( rRow.begin() + nColOffset, rRow.end(), lcl_ApplyCellToData( aDataInRows[nRow] ));
+ Sequence< double >& rTargetRow = aDataInRows[nRow];
+ lcl_ApplyCellToData aApplyCellToData = ::std::for_each( rRow.begin() + nColOffset, rRow.end(), lcl_ApplyCellToData( rTargetRow ) );
+ double fNaN = 0.0;
+ ::rtl::math::setNan( &fNaN );
+ for( sal_Int32 nCurrentIndex = aApplyCellToData.getCurrentIndex(); nCurrentIndex<nNumColumns; nCurrentIndex++ )
+ rTargetRow[nCurrentIndex] = fNaN;//#i110615#
}
}
}
diff --git a/xmloff/source/chart/SchXMLTools.cxx b/xmloff/source/chart/SchXMLTools.cxx
index f5059f979b63..32fe36197a32 100644
--- a/xmloff/source/chart/SchXMLTools.cxx
+++ b/xmloff/source/chart/SchXMLTools.cxx
@@ -133,20 +133,25 @@ sal_Int32 lcl_getBuildIDFromGenerator( const ::rtl::OUString& rGenerator )
return nBuildId;
}
+OUString lcl_ConvertRange( const ::rtl::OUString & rRange, const Reference< chart2::data::XDataProvider >& xDataProvider )
+{
+ OUString aResult = rRange;
+ Reference< chart2::data::XRangeXMLConversion > xRangeConversion( xDataProvider, uno::UNO_QUERY );
+ if( xRangeConversion.is())
+ aResult = xRangeConversion->convertRangeFromXML( rRange );
+ return aResult;
+}
+
Reference< chart2::data::XDataSequence > lcl_createNewSequenceFromCachedXMLRange( const Reference< chart2::data::XDataSequence >& xSeq, const Reference< chart2::data::XDataProvider >& xDataProvider )
{
Reference< chart2::data::XDataSequence > xRet;
OUString aRange;
- Reference< chart2::data::XRangeXMLConversion > xRangeConversion( xDataProvider, uno::UNO_QUERY );
- if( xRangeConversion.is() )
+ if( xSeq.is() && SchXMLTools::getXMLRangePropertyFromDataSequence( xSeq, aRange, /* bClearProp = */ true ) )
{
- if( xSeq.is() && SchXMLTools::getXMLRangePropertyFromDataSequence( xSeq, aRange, /* bClearProp = */ true ) )
- {
- xRet.set( xDataProvider->createDataSequenceByRangeRepresentation(
- xRangeConversion->convertRangeFromXML( aRange )) );
- SchXMLTools::copyProperties( Reference< beans::XPropertySet >( xSeq, uno::UNO_QUERY ),
- Reference< beans::XPropertySet >( xRet, uno::UNO_QUERY ));
- }
+ xRet.set( xDataProvider->createDataSequenceByRangeRepresentation(
+ lcl_ConvertRange( aRange, xDataProvider )) );
+ SchXMLTools::copyProperties( Reference< beans::XPropertySet >( xSeq, uno::UNO_QUERY ),
+ Reference< beans::XPropertySet >( xRet, uno::UNO_QUERY ));
}
return xRet;
}
@@ -385,6 +390,53 @@ Reference< chart2::data::XLabeledDataSequence > GetNewLabeledDataSequence()
return xResult;
}
+Reference< chart2::data::XDataSequence > CreateDataSequence(
+ const OUString & rRange,
+ const Reference< chart2::XChartDocument >& xChartDoc )
+{
+ Reference< chart2::data::XDataSequence > xRet;
+
+ if( !xChartDoc.is() )
+ {
+ DBG_ERROR( "need a chart document" );
+ return xRet;
+ }
+
+ Reference< chart2::data::XDataProvider > xDataProvider( xChartDoc->getDataProvider() );
+ if( !xDataProvider.is() )
+ {
+ DBG_ERROR( "need a data provider" );
+ return xRet;
+ }
+
+ try
+ {
+ xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider )));
+ SchXMLTools::setXMLRangePropertyAtDataSequence( xRet, rRange );
+ }
+ catch( const lang::IllegalArgumentException & )
+ {
+ DBG_ERROR( "could not create data sequence" );
+ }
+
+ if( !xRet.is() && !xChartDoc->hasInternalDataProvider() )
+ {
+ //#i103911# switch to internal data in case the parent cannot provide the requested data
+ xChartDoc->createInternalDataProvider( sal_True /* bCloneExistingData */ );
+ xDataProvider = xChartDoc->getDataProvider();
+ try
+ {
+ xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider )));
+ SchXMLTools::setXMLRangePropertyAtDataSequence( xRet, rRange );
+ }
+ catch( const lang::IllegalArgumentException & )
+ {
+ DBG_ERROR( "could not create data sequence" );
+ }
+ }
+ return xRet;
+}
+
void CreateCategories(
const uno::Reference< chart2::data::XDataProvider > & xDataProvider,
const uno::Reference< chart2::XChartDocument > & xNewDoc,
diff --git a/xmloff/source/chart/SchXMLTools.hxx b/xmloff/source/chart/SchXMLTools.hxx
index 35ac3ff72f1b..0b77d8e6d38a 100644
--- a/xmloff/source/chart/SchXMLTools.hxx
+++ b/xmloff/source/chart/SchXMLTools.hxx
@@ -87,6 +87,11 @@ namespace SchXMLTools
::com::sun::star::uno::Reference<
::com::sun::star::chart2::data::XLabeledDataSequence > GetNewLabeledDataSequence();
+ ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > CreateDataSequence(
+ const ::rtl::OUString& rRange,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::chart2::XChartDocument >& xChartDoc );
+
void CreateCategories(
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataProvider > & xDataProvider,
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > & xNewDoc,
diff --git a/xmloff/source/core/RDFaExportHelper.cxx b/xmloff/source/core/RDFaExportHelper.cxx
index 6e3129f48d71..593e2d1f29e6 100644
--- a/xmloff/source/core/RDFaExportHelper.cxx
+++ b/xmloff/source/core/RDFaExportHelper.cxx
@@ -95,11 +95,6 @@ RDFaExportHelper::RDFaExportHelper(SvXMLExport & i_rExport)
OSL_ENSURE(xRS.is(), "AddRDFa: model is no rdf::XRepositorySupplier");
if (!xRS.is()) throw uno::RuntimeException();
m_xRepository.set(xRS->getRDFRepository(), uno::UNO_QUERY_THROW);
-
- const uno::Reference<rdf::XURI> xLabel(
- rdf::URI::createKnown(m_rExport.GetComponentContext(),
- rdf::URIs::RDFS_LABEL));
- m_RDFsLabel = xLabel->getStringValue();
}
::rtl::OUString
@@ -128,19 +123,21 @@ RDFaExportHelper::AddRDFa(
{
try
{
- uno::Sequence<rdf::Statement> stmts(
- m_xRepository->getStatementRDFa(i_xMetadatable) );
+ beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > const
+ RDFaResult( m_xRepository->getStatementRDFa(i_xMetadatable) );
+
+ uno::Sequence<rdf::Statement> const & rStatements( RDFaResult.First );
- if (0 == stmts.getLength())
+ if (0 == rStatements.getLength())
{
return; // no RDFa
}
// all stmts have the same subject, so we only handle first one
- const uno::Reference<rdf::XURI> xSubjectURI(stmts[0].Subject,
- uno::UNO_QUERY);
- const uno::Reference<rdf::XBlankNode> xSubjectBNode(stmts[0].Subject,
+ const uno::Reference<rdf::XURI> xSubjectURI(rStatements[0].Subject,
uno::UNO_QUERY);
+ const uno::Reference<rdf::XBlankNode> xSubjectBNode(
+ rStatements[0].Subject, uno::UNO_QUERY);
if (!xSubjectURI.is() && !xSubjectBNode.is())
{
throw uno::RuntimeException();
@@ -154,47 +151,31 @@ RDFaExportHelper::AddRDFa(
.makeStringAndClear()
);
- rdf::Statement* const iter
- ( ::std::partition( ::comphelper::stl_begin(stmts),
- ::comphelper::stl_end(stmts),
- ::boost::bind(&::rtl::OUString::equals, m_RDFsLabel,
- ::boost::bind(&rdf::XNode::getStringValue,
- ::boost::bind(&rdf::Statement::Predicate, _1))) ) );
-
- if (iter != ::comphelper::stl_end(stmts))
+ const uno::Reference<rdf::XLiteral> xContent(
+ rStatements[0].Object, uno::UNO_QUERY_THROW );
+ const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype());
+ if (xDatatype.is())
{
- // from iter to end, all stmts should have same object
- const uno::Reference<rdf::XLiteral> xContent(
- (*iter).Object, uno::UNO_QUERY_THROW );
- const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype());
- if (xDatatype.is())
- {
- const ::rtl::OUString datatype(
- makeCURIE(&m_rExport, xDatatype) );
- m_rExport.AddAttribute(XML_NAMESPACE_XHTML,
- token::XML_DATATYPE, datatype);
- }
- if (iter != ::comphelper::stl_begin(stmts)) // there is rdfs:label
- {
- m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT,
- xContent->getValue());
- }
+ const ::rtl::OUString datatype(
+ makeCURIE(&m_rExport, xDatatype) );
+ m_rExport.AddAttribute(XML_NAMESPACE_XHTML,
+ token::XML_DATATYPE, datatype);
}
- else
+ if (RDFaResult.Second) // there is xhtml:content
{
- OSL_ENSURE(false,"invalid RDFa: every property is rdfs:label");
- return;
+ m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT,
+ xContent->getValue());
}
::rtl::OUStringBuffer property;
::comphelper::intersperse(
::boost::make_transform_iterator(
- iter, // omit RDFsLabel predicates!
+ ::comphelper::stl_begin(rStatements),
::boost::bind(&makeCURIE, &m_rExport,
::boost::bind(&rdf::Statement::Predicate, _1))),
// argh, this must be the same type :(
::boost::make_transform_iterator(
- ::comphelper::stl_end(stmts),
+ ::comphelper::stl_end(rStatements),
::boost::bind(&makeCURIE, &m_rExport,
::boost::bind(&rdf::Statement::Predicate, _1))),
::comphelper::OUStringBufferAppender(property),
diff --git a/xmloff/source/core/RDFaImportHelper.cxx b/xmloff/source/core/RDFaImportHelper.cxx
index 4dbf840fd343..611889497812 100644
--- a/xmloff/source/core/RDFaImportHelper.cxx
+++ b/xmloff/source/core/RDFaImportHelper.cxx
@@ -126,28 +126,39 @@ public:
void InsertRDFaEntry(struct RDFaEntry const & i_rEntry);
};
-/** store metadatable object and its RDFa attributes */
-struct SAL_DLLPRIVATE RDFaEntry
+/** store parsed RDFa attributes */
+struct SAL_DLLPRIVATE ParsedRDFaAttributes
{
- uno::Reference<rdf::XMetadatable> m_xObject;
::rtl::OUString m_About;
::std::vector< ::rtl::OUString > m_Properties;
::rtl::OUString m_Content;
::rtl::OUString m_Datatype;
- RDFaEntry(uno::Reference<rdf::XMetadatable> i_xObject,
+ ParsedRDFaAttributes(
::rtl::OUString const & i_rAbout,
::std::vector< ::rtl::OUString > const & i_rProperties,
::rtl::OUString const & i_rContent,
::rtl::OUString const & i_rDatatype)
- : m_xObject(i_xObject)
- , m_About(i_rAbout)
+ : m_About(i_rAbout)
, m_Properties(i_rProperties)
, m_Content(i_rContent)
, m_Datatype(i_rDatatype)
{ }
};
+/** store metadatable object and its RDFa attributes */
+struct SAL_DLLPRIVATE RDFaEntry
+{
+ uno::Reference<rdf::XMetadatable> m_xObject;
+ ::boost::shared_ptr<ParsedRDFaAttributes> m_pRDFaAttributes;
+
+ RDFaEntry(uno::Reference<rdf::XMetadatable> const & i_xObject,
+ ::boost::shared_ptr<ParsedRDFaAttributes> const& i_pRDFaAttributes)
+ : m_xObject(i_xObject)
+ , m_pRDFaAttributes(i_pRDFaAttributes)
+ { }
+};
+
////////////////////////////////////////////////////////////////////////////
@@ -344,7 +355,7 @@ void RDFaInserter::InsertRDFaEntry(
if (!i_rEntry.m_xObject.is()) return;
const uno::Reference< rdf::XResource > xSubject(
- MakeResource( i_rEntry.m_About ) );
+ MakeResource( i_rEntry.m_pRDFaAttributes->m_About ) );
if (!xSubject.is())
{
return; // invalid
@@ -352,13 +363,15 @@ void RDFaInserter::InsertRDFaEntry(
::comphelper::SequenceAsVector< uno::Reference< rdf::XURI > > predicates;
- predicates.reserve(i_rEntry.m_Properties.size());
+ predicates.reserve(i_rEntry.m_pRDFaAttributes->m_Properties.size());
::std::remove_copy_if(
- ::boost::make_transform_iterator(i_rEntry.m_Properties.begin(),
+ ::boost::make_transform_iterator(
+ i_rEntry.m_pRDFaAttributes->m_Properties.begin(),
::boost::bind(&RDFaInserter::MakeURI, this, _1)),
// argh, this must be the same type :(
- ::boost::make_transform_iterator(i_rEntry.m_Properties.end(),
+ ::boost::make_transform_iterator(
+ i_rEntry.m_pRDFaAttributes->m_Properties.end(),
::boost::bind(&RDFaInserter::MakeURI, this, _1)),
::std::back_inserter(predicates),
ref_is_null() );
@@ -375,9 +388,9 @@ void RDFaInserter::InsertRDFaEntry(
}
uno::Reference<rdf::XURI> xDatatype;
- if (i_rEntry.m_Datatype.getLength())
+ if (i_rEntry.m_pRDFaAttributes->m_Datatype.getLength())
{
- xDatatype = MakeURI( i_rEntry.m_Datatype );
+ xDatatype = MakeURI( i_rEntry.m_pRDFaAttributes->m_Datatype );
}
try
@@ -386,7 +399,8 @@ void RDFaInserter::InsertRDFaEntry(
// this must be done _after_ importing the whole XML file,
// to prevent collision between generated ids and ids in the file
m_xRepository->setStatementRDFa(xSubject, predicates.getAsConstList(),
- i_rEntry.m_xObject, i_rEntry.m_Content, xDatatype);
+ i_rEntry.m_xObject,
+ i_rEntry.m_pRDFaAttributes->m_Content, xDatatype);
}
catch (uno::Exception &)
{
@@ -405,9 +419,8 @@ RDFaImportHelper::~RDFaImportHelper()
{
}
-void
-RDFaImportHelper::AddRDFa(
- uno::Reference<rdf::XMetadatable> i_xObject,
+::boost::shared_ptr<ParsedRDFaAttributes>
+RDFaImportHelper::ParseRDFa(
::rtl::OUString const & i_rAbout,
::rtl::OUString const & i_rProperty,
::rtl::OUString const & i_rContent,
@@ -416,25 +429,58 @@ RDFaImportHelper::AddRDFa(
if (!i_rProperty.getLength())
{
OSL_TRACE("AddRDFa: invalid input: xhtml:property empty");
- return;
- }
- if (!i_xObject.is())
- {
- OSL_ENSURE(false, "AddRDFa: invalid arg: null textcontent");
- return;
+ return ::boost::shared_ptr<ParsedRDFaAttributes>();
}
// must parse CURIEs here: need namespace declaration context
RDFaReader reader(GetImport());
const ::rtl::OUString about( reader.ReadURIOrSafeCURIE(i_rAbout) );
- if (!about.getLength()) return;
+ if (!about.getLength()) {
+ return ::boost::shared_ptr<ParsedRDFaAttributes>();
+ }
const ::std::vector< ::rtl::OUString > properties(
reader.ReadCURIEs(i_rProperty) );
- if (!properties.size()) return;
+ if (!properties.size()) {
+ return ::boost::shared_ptr<ParsedRDFaAttributes>();
+ }
const ::rtl::OUString datatype( i_rDatatype.getLength()
? reader.ReadCURIE(i_rDatatype)
: ::rtl::OUString() );
- m_RDFaEntries.push_back(RDFaEntry(i_xObject,
- about, properties, i_rContent, datatype));
+ return ::boost::shared_ptr<ParsedRDFaAttributes>(
+ new ParsedRDFaAttributes(about, properties, i_rContent, datatype));
+}
+
+void
+RDFaImportHelper::AddRDFa(
+ uno::Reference<rdf::XMetadatable> const & i_xObject,
+ ::boost::shared_ptr<ParsedRDFaAttributes> & i_pRDFaAttributes)
+{
+ if (!i_xObject.is())
+ {
+ OSL_ENSURE(false, "AddRDFa: invalid arg: null textcontent");
+ return;
+ }
+ if (!i_pRDFaAttributes.get())
+ {
+ OSL_ENSURE(false, "AddRDFa: invalid arg: null RDFa attributes");
+ return;
+ }
+ m_RDFaEntries.push_back(RDFaEntry(i_xObject, i_pRDFaAttributes));
+}
+
+void
+RDFaImportHelper::ParseAndAddRDFa(
+ uno::Reference<rdf::XMetadatable> const & i_xObject,
+ ::rtl::OUString const & i_rAbout,
+ ::rtl::OUString const & i_rProperty,
+ ::rtl::OUString const & i_rContent,
+ ::rtl::OUString const & i_rDatatype)
+{
+ ::boost::shared_ptr<ParsedRDFaAttributes> pAttributes(
+ ParseRDFa(i_rAbout, i_rProperty, i_rContent, i_rDatatype) );
+ if (pAttributes.get())
+ {
+ AddRDFa(i_xObject, pAttributes);
+ }
}
void RDFaImportHelper::InsertRDFa(
diff --git a/xmloff/source/core/makefile.mk b/xmloff/source/core/makefile.mk
index b881f9610fbc..4d663d3218d8 100644
--- a/xmloff/source/core/makefile.mk
+++ b/xmloff/source/core/makefile.mk
@@ -38,12 +38,6 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
.INCLUDE: $(PRJ)$/util$/makefile.pmk
-# --- to build xmlkywd.obj in obj, too -----------------------------
-
-OBJFILES = $(OBJ)$/xmlkywd.obj
-LIB2TARGET =$(LB)$/xmlkywd.lib
-LIB2OBJFILES =$(OBJFILES)
-
# --- Files --------------------------------------------------------
SLOFILES = \
@@ -59,7 +53,6 @@ SLOFILES = \
$(SLO)$/xmlexp.obj \
$(SLO)$/xmlictxt.obj \
$(SLO)$/xmlimp.obj \
- $(SLO)$/xmlkywd.obj \
$(SLO)$/xmltkmap.obj \
$(SLO)$/xmltoken.obj \
$(SLO)$/xmluconv.obj \
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index 6a7dcf496722..597a1d50b0f9 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -38,7 +38,6 @@
#include <xmloff/nmspmap.hxx>
#include <xmloff/xmluconv.hxx>
#include "xmlnmspe.hxx"
-#include "xmlkywd.hxx"
#include <xmloff/xmltoken.hxx>
#include <xmloff/XMLFontStylesContext.hxx>
#include <xmloff/xmlictxt.hxx>
@@ -110,6 +109,7 @@ sal_Char __READONLY_DATA sXML_np__number[] = "_number";
sal_Char __READONLY_DATA sXML_np__svg[] = "_svg";
sal_Char __READONLY_DATA sXML_np__chart[] = "_chart";
sal_Char __READONLY_DATA sXML_np__math[] = "_math";
+sal_Char __READONLY_DATA sXML_np__form[] = "_form";
sal_Char __READONLY_DATA sXML_np__script[] = "_script";
sal_Char __READONLY_DATA sXML_np__config[] = "_config";
sal_Char __READONLY_DATA sXML_np__db[] = "_db";
@@ -293,7 +293,7 @@ void SvXMLImport::_InitCtor()
mpNamespaceMap->Add( OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_np__math) ),
GetXMLToken(XML_N_MATH),
XML_NAMESPACE_MATH );
- mpNamespaceMap->Add( OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_namespace_form) ),
+ mpNamespaceMap->Add(OUString(RTL_CONSTASCII_USTRINGPARAM( sXML_np__form )),
GetXMLToken(XML_N_FORM),
XML_NAMESPACE_FORM );
mpNamespaceMap->Add( OUString( RTL_CONSTASCII_USTRINGPARAM ( sXML_np__script) ),
@@ -675,7 +675,7 @@ void SAL_CALL SvXMLImport::startElement( const OUString& rName,
}
}
else if( ( rAttrName.getLength() >= 5 ) &&
- ( rAttrName.compareToAscii( sXML_xmlns, 5 ) == 0 ) &&
+ ( rAttrName.compareTo( GetXMLToken(XML_XMLNS), 5 ) == 0 ) &&
( rAttrName.getLength() == 5 || ':' == rAttrName[5] ) )
{
if( !pRewindMap )
@@ -1985,6 +1985,16 @@ void SvXMLImport::SetXmlId(uno::Reference<uno::XInterface> const & i_xIfc,
}
}
+SAL_DLLPRIVATE ::xmloff::RDFaImportHelper &
+SvXMLImport::GetRDFaImportHelper()
+{
+ if (!mpImpl->mpRDFaHelper.get())
+ {
+ mpImpl->mpRDFaHelper.reset( new ::xmloff::RDFaImportHelper(*this) );
+ }
+ return *mpImpl->mpRDFaHelper;
+}
+
void
SvXMLImport::AddRDFa(uno::Reference<rdf::XMetadatable> i_xObject,
::rtl::OUString const & i_rAbout,
@@ -1994,11 +2004,8 @@ SvXMLImport::AddRDFa(uno::Reference<rdf::XMetadatable> i_xObject,
{
// N.B.: we only get called if i_xObject had xhtml:about attribute
// (an empty attribute value is valid)
- if (!mpImpl->mpRDFaHelper.get())
- {
- mpImpl->mpRDFaHelper.reset( new ::xmloff::RDFaImportHelper(*this) );
- }
- mpImpl->mpRDFaHelper->AddRDFa(i_xObject,
+ ::xmloff::RDFaImportHelper & rRDFaHelper( GetRDFaImportHelper() );
+ rRDFaHelper.ParseAndAddRDFa(i_xObject,
i_rAbout, i_rProperty, i_rContent, i_rDatatype);
}
diff --git a/xmloff/source/draw/XMLReplacementImageContext.cxx b/xmloff/source/draw/XMLReplacementImageContext.cxx
index c6d63511cbd6..4eb607e0403b 100644
--- a/xmloff/source/draw/XMLReplacementImageContext.cxx
+++ b/xmloff/source/draw/XMLReplacementImageContext.cxx
@@ -33,7 +33,6 @@
#include <xmloff/xmlimp.hxx>
#include <xmloff/xmltoken.hxx>
#include "xmlnmspe.hxx"
-#include "xmlkywd.hxx"
#include <xmloff/nmspmap.hxx>
#include <xmloff/XMLBase64ImportContext.hxx>
#include "XMLReplacementImageContext.hxx"
diff --git a/xmloff/source/draw/sdpropls.cxx b/xmloff/source/draw/sdpropls.cxx
index eae1925e4105..9dac5b4cd469 100644
--- a/xmloff/source/draw/sdpropls.cxx
+++ b/xmloff/source/draw/sdpropls.cxx
@@ -323,8 +323,9 @@ const XMLPropertyMapEntry aXMLSDPresPageProps[] =
DPMAP( "FillStyle", XML_NAMESPACE_DRAW, XML_FILL, XML_SD_TYPE_FILLSTYLE, 0 ),
DPMAP( "FillColor", XML_NAMESPACE_DRAW, XML_FILL_COLOR, XML_TYPE_COLOR, 0 ),
DPMAP( "FillGradientName", XML_NAMESPACE_DRAW, XML_FILL_GRADIENT_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLGRADIENTNAME ),
- DPMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER16, 0 ),
+ DPMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER, 0 ),
DPMAP( "FillHatchName", XML_NAMESPACE_DRAW, XML_FILL_HATCH_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLHATCHNAME ),
+ GMAP( "FillBackground", XML_NAMESPACE_DRAW, XML_FILL_HATCH_SOLID, XML_TYPE_BOOL, 0 ),
DPMAP( "FillBitmapName", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLBITMAPNAME ),
DPMAP( "FillTransparenceGradientName", XML_NAMESPACE_DRAW, XML_OPACITY_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLTRANSNAME ),
DPMAP( "FillBitmapSizeX", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_WIDTH, XML_SD_TYPE_FILLBITMAPSIZE|MID_FLAG_MULTI_PROPERTY, 0 ),
diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx
index 709677c6ae07..3ec0d01ff1e5 100644
--- a/xmloff/source/draw/shapeexport.cxx
+++ b/xmloff/source/draw/shapeexport.cxx
@@ -27,7 +27,11 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_xmloff.hxx"
+
+#include <memory>
+
#include "unointerfacetouniqueidentifiermapper.hxx"
+#include <com/sun/star/presentation/ClickAction.hpp>
#include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/text/XText.hpp>
@@ -75,6 +79,8 @@ XMLShapeExport::XMLShapeExport(SvXMLExport& rExp,
SvXMLExportPropertyMapper *pExtMapper )
: mrExport( rExp ),
mnNextUniqueShapeId(1),
+ maShapesInfos(),
+ maCurrentShapesIter(maShapesInfos.end()),
mbExportLayer( sal_False ),
// #88546# init to FALSE
mbHandleProgressBar( sal_False ),
@@ -538,6 +544,38 @@ void XMLShapeExport::exportShape(const uno::Reference< drawing::XShape >& xShape
}
sal_Int32 nZIndex = 0;
uno::Reference< beans::XPropertySet > xSet( xShape, uno::UNO_QUERY );
+
+
+ ::std::auto_ptr< SvXMLElementExport > mpHyperlinkElement;
+
+ // export hyperlinks with <a><shape/></a>. Currently only in draw since draw
+ // does not support document events
+ if( xSet.is() && (GetExport().GetModelType() == SvtModuleOptions::E_DRAW) ) try
+ {
+ presentation::ClickAction eAction = presentation::ClickAction_NONE;
+ xSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("OnClick"))) >>= eAction;
+
+ if( (eAction == presentation::ClickAction_DOCUMENT) ||
+ (eAction == presentation::ClickAction_BOOKMARK) )
+ {
+ OUString sURL;
+ xSet->getPropertyValue(msBookmark) >>= sURL;
+
+ if( sURL.getLength() )
+ {
+ mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sURL );
+ mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
+ mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED );
+ mpHyperlinkElement.reset( new SvXMLElementExport(mrExport, XML_NAMESPACE_DRAW, XML_A, sal_True, sal_True) );
+ }
+ }
+ }
+ catch( uno::Exception& )
+ {
+ DBG_ERROR("XMLShapeExport::exportShape(): exception during hyperlink export");
+ }
+
+
if( xSet.is() )
xSet->getPropertyValue(msZIndex) >>= nZIndex;
@@ -845,6 +883,8 @@ void XMLShapeExport::exportShape(const uno::Reference< drawing::XShape >& xShape
}
}
+ mpHyperlinkElement.reset();
+
// #97489# #97111#
// if there was an error and no element for the shape was exported
// we need to clear the attribute list or the attributes will be
diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx
index f4e7c1466ecd..365fb000389e 100644
--- a/xmloff/source/draw/ximpshap.cxx
+++ b/xmloff/source/draw/ximpshap.cxx
@@ -372,31 +372,46 @@ void SdXMLShapeContext::EndElement()
if( msHyperlink.getLength() != 0 ) try
{
- Reference< XEventsSupplier > xEventsSupplier( mxShape, UNO_QUERY_THROW );
- Reference< XNameReplace > xEvents( xEventsSupplier->getEvents(), UNO_QUERY_THROW );
+ const OUString sBookmark( RTL_CONSTASCII_USTRINGPARAM( "Bookmark" ) );
- uno::Sequence< beans::PropertyValue > aProperties( 3 );
- aProperties[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "EventType" ) );
- aProperties[0].Handle = -1;
- aProperties[0].Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM("Presentation") );
- aProperties[0].State = beans::PropertyState_DIRECT_VALUE;
+ Reference< XEventsSupplier > xEventsSupplier( mxShape, UNO_QUERY );
+ if( xEventsSupplier.is() )
+ {
+ const OUString sEventType( RTL_CONSTASCII_USTRINGPARAM( "EventType" ) );
+ const OUString sClickAction( RTL_CONSTASCII_USTRINGPARAM( "ClickAction" ) );
+
+ Reference< XNameReplace > xEvents( xEventsSupplier->getEvents(), UNO_QUERY_THROW );
- aProperties[1].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "ClickAction" ) );
- aProperties[1].Handle = -1;
- aProperties[1].Value <<= ::com::sun::star::presentation::ClickAction_DOCUMENT;
- aProperties[1].State = beans::PropertyState_DIRECT_VALUE;
+ uno::Sequence< beans::PropertyValue > aProperties( 3 );
+ aProperties[0].Name = sEventType;
+ aProperties[0].Handle = -1;
+ aProperties[0].Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM("Presentation") );
+ aProperties[0].State = beans::PropertyState_DIRECT_VALUE;
- aProperties[2].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "Bookmark" ) );
- aProperties[2].Handle = -1;
- aProperties[2].Value <<= msHyperlink;
- aProperties[2].State = beans::PropertyState_DIRECT_VALUE;
+ aProperties[1].Name = sClickAction;
+ aProperties[1].Handle = -1;
+ aProperties[1].Value <<= ::com::sun::star::presentation::ClickAction_DOCUMENT;
+ aProperties[1].State = beans::PropertyState_DIRECT_VALUE;
- const OUString sAPIEventName( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) );
- xEvents->replaceByName( sAPIEventName, Any( aProperties ) );
+ aProperties[2].Name = sBookmark;
+ aProperties[2].Handle = -1;
+ aProperties[2].Value <<= msHyperlink;
+ aProperties[2].State = beans::PropertyState_DIRECT_VALUE;
+
+ const OUString sAPIEventName( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) );
+ xEvents->replaceByName( sAPIEventName, Any( aProperties ) );
+ }
+ else
+ {
+ // in draw use the Bookmark property
+ Reference< beans::XPropertySet > xSet( mxShape, UNO_QUERY_THROW );
+ xSet->setPropertyValue( sBookmark, Any( msHyperlink ) );
+ xSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) ), Any( ::com::sun::star::presentation::ClickAction_DOCUMENT ) );
+ }
}
catch( Exception& )
{
- DBG_ERROR("xmloff::SdXMLShapeContext::EndElement(), exception caught!");
+ DBG_ERROR("xmloff::SdXMLShapeContext::EndElement(), exception caught while setting hyperlink!");
}
if( mxLockable.is() )
@@ -3668,7 +3683,7 @@ void SdXMLTableShapeContext::processAttribute( sal_uInt16 nPrefix, const ::rtl::
SvXMLImportContext* SdXMLTableShapeContext::CreateChildContext( USHORT nPrefix, const ::rtl::OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& xAttrList )
{
- if( mxTableImportContext.Is() )
+ if( mxTableImportContext.Is() && (nPrefix == XML_NAMESPACE_TABLE) )
return mxTableImportContext->CreateChildContext(nPrefix, rLocalName, xAttrList);
else
return SdXMLShapeContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
diff --git a/xmloff/source/style/WordWrapPropertyHdl.cxx b/xmloff/source/style/WordWrapPropertyHdl.cxx
index 86792847b2c3..f3717b95c9cd 100644
--- a/xmloff/source/style/WordWrapPropertyHdl.cxx
+++ b/xmloff/source/style/WordWrapPropertyHdl.cxx
@@ -29,7 +29,6 @@
#include "precompiled_xmloff.hxx"
#include <xmloff/xmlimp.hxx>
#include <xmloff/WordWrapPropertyHdl.hxx>
-#include "xmlkywd.hxx"
#include <xmloff/xmltoken.hxx>
#include <xmloff/xmluconv.hxx>
#include <comphelper/extract.hxx>
diff --git a/xmloff/source/style/XMLClipPropertyHandler.cxx b/xmloff/source/style/XMLClipPropertyHandler.cxx
index 35b5c166a991..f90e3346c1ba 100644
--- a/xmloff/source/style/XMLClipPropertyHandler.cxx
+++ b/xmloff/source/style/XMLClipPropertyHandler.cxx
@@ -32,7 +32,6 @@
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/text/GraphicCrop.hpp>
#include <xmloff/xmluconv.hxx>
-#include <xmlkywd.hxx>
#include <xmloff/xmltoken.hxx>
using ::rtl::OUString;
@@ -77,7 +76,7 @@ sal_Bool XMLClipPropertyHandler::importXML( const OUString& rStrImpValue, uno::A
sal_Bool bRet = sal_False;
sal_Int32 nLen = rStrImpValue.getLength();
if( nLen > 6 &&
- 0 == rStrImpValue.compareToAscii( sXML_rect, 4 ) &&
+ 0 == rStrImpValue.compareTo( GetXMLToken(XML_RECT), 4 ) &&
rStrImpValue[4] == '(' &&
rStrImpValue[nLen-1] == ')' )
{
diff --git a/xmloff/source/style/XMLRectangleMembersHandler.cxx b/xmloff/source/style/XMLRectangleMembersHandler.cxx
index 07334f2137db..acd53e2dfd4e 100644
--- a/xmloff/source/style/XMLRectangleMembersHandler.cxx
+++ b/xmloff/source/style/XMLRectangleMembersHandler.cxx
@@ -48,11 +48,6 @@ XMLRectangleMembersHdl::XMLRectangleMembersHdl( sal_Int32 nType )
{
}
- sal_Int32 X;
- sal_Int32 Y;
- sal_Int32 Width;
- sal_Int32 Height;
-
XMLRectangleMembersHdl::~XMLRectangleMembersHdl()
{
}
diff --git a/xmloff/source/style/adjushdl.cxx b/xmloff/source/style/adjushdl.cxx
index 7e7ceb961c36..027bebdb8075 100644
--- a/xmloff/source/style/adjushdl.cxx
+++ b/xmloff/source/style/adjushdl.cxx
@@ -35,10 +35,6 @@
#include <com/sun/star/style/ParagraphAdjust.hpp>
#include <com/sun/star/uno/Any.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using namespace ::com::sun::star;
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/backhdl.cxx b/xmloff/source/style/backhdl.cxx
index 476a9a0a97e9..df02a6504bac 100644
--- a/xmloff/source/style/backhdl.cxx
+++ b/xmloff/source/style/backhdl.cxx
@@ -34,10 +34,6 @@
#include <com/sun/star/uno/Any.hxx>
#include <rtl/ustrbuf.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/bordrhdl.cxx b/xmloff/source/style/bordrhdl.cxx
index cddf587184b6..5611bbd1f472 100644
--- a/xmloff/source/style/bordrhdl.cxx
+++ b/xmloff/source/style/bordrhdl.cxx
@@ -34,10 +34,6 @@
#include <xmloff/xmluconv.hxx>
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/uno/Any.hxx>
-
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
#include <com/sun/star/table/BorderLine.hpp>
using ::rtl::OUString;
diff --git a/xmloff/source/style/breakhdl.cxx b/xmloff/source/style/breakhdl.cxx
index 0ebe3af8a385..d95cd2e5e91a 100644
--- a/xmloff/source/style/breakhdl.cxx
+++ b/xmloff/source/style/breakhdl.cxx
@@ -34,10 +34,6 @@
#include <com/sun/star/style/BreakType.hpp>
#include <com/sun/star/uno/Any.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/cdouthdl.cxx b/xmloff/source/style/cdouthdl.cxx
index f314a2b813f0..c5f764cf9ac4 100644
--- a/xmloff/source/style/cdouthdl.cxx
+++ b/xmloff/source/style/cdouthdl.cxx
@@ -32,15 +32,9 @@
#include <xmloff/xmluconv.hxx>
#include <rtl/ustrbuf.hxx>
-#ifndef _COM_SUN_STAR_AWT_FONTSTRIKEOUT_HPP
#include <com/sun/star/awt/FontStrikeout.hpp>
-#endif
#include <com/sun/star/uno/Any.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/chrhghdl.cxx b/xmloff/source/style/chrhghdl.cxx
index a3076ca4c864..1a70696583d2 100644
--- a/xmloff/source/style/chrhghdl.cxx
+++ b/xmloff/source/style/chrhghdl.cxx
@@ -35,10 +35,6 @@
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/uno/Any.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/chrlohdl.cxx b/xmloff/source/style/chrlohdl.cxx
index b1b0a01d93f8..06778d67576f 100644
--- a/xmloff/source/style/chrlohdl.cxx
+++ b/xmloff/source/style/chrlohdl.cxx
@@ -34,10 +34,6 @@
#include <xmloff/xmluconv.hxx>
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/uno/Any.hxx>
-
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
#include <com/sun/star/lang/Locale.hpp>
using ::rtl::OUString;
diff --git a/xmloff/source/style/csmaphdl.cxx b/xmloff/source/style/csmaphdl.cxx
index 023153eda552..0a29de364bce 100644
--- a/xmloff/source/style/csmaphdl.cxx
+++ b/xmloff/source/style/csmaphdl.cxx
@@ -32,14 +32,8 @@
#include <xmloff/xmluconv.hxx>
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/style/CaseMap.hpp>
-
-
#include <com/sun/star/uno/Any.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/escphdl.cxx b/xmloff/source/style/escphdl.cxx
index 337ff5cdbb60..548f867d6606 100644
--- a/xmloff/source/style/escphdl.cxx
+++ b/xmloff/source/style/escphdl.cxx
@@ -35,10 +35,6 @@
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/uno/Any.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/fonthdl.cxx b/xmloff/source/style/fonthdl.cxx
index 04e0b36609cd..4d47ae9b996c 100644
--- a/xmloff/source/style/fonthdl.cxx
+++ b/xmloff/source/style/fonthdl.cxx
@@ -37,9 +37,6 @@
#include <com/sun/star/uno/Any.hxx>
#include <tools/fontenum.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
#include <tools/string.hxx>
using ::rtl::OUString;
diff --git a/xmloff/source/style/lspachdl.cxx b/xmloff/source/style/lspachdl.cxx
index dd47749d205b..6ea6221a0b27 100644
--- a/xmloff/source/style/lspachdl.cxx
+++ b/xmloff/source/style/lspachdl.cxx
@@ -37,10 +37,6 @@
#include <com/sun/star/style/LineSpacing.hpp>
#include <com/sun/star/style/LineSpacingMode.hpp>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/postuhdl.cxx b/xmloff/source/style/postuhdl.cxx
index 28cda4eba8b6..b0885b539d4b 100644
--- a/xmloff/source/style/postuhdl.cxx
+++ b/xmloff/source/style/postuhdl.cxx
@@ -35,10 +35,6 @@
#include <com/sun/star/awt/FontSlant.hpp>
#include <tools/fontenum.hxx>
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
-
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/styleexp.cxx b/xmloff/source/style/styleexp.cxx
index 5292b92d4128..cb666d899fb7 100644
--- a/xmloff/source/style/styleexp.cxx
+++ b/xmloff/source/style/styleexp.cxx
@@ -39,7 +39,6 @@
//#include "xmlitmap.hxx"
#endif
#include <xmloff/xmluconv.hxx>
-#include "xmlkywd.hxx"
#include <xmloff/attrlist.hxx>
#include <xmloff/xmlprmap.hxx>
#include <xmloff/xmlexppr.hxx>
diff --git a/xmloff/source/style/undlihdl.cxx b/xmloff/source/style/undlihdl.cxx
index bbe9eea647b3..226ae3207e50 100644
--- a/xmloff/source/style/undlihdl.cxx
+++ b/xmloff/source/style/undlihdl.cxx
@@ -34,13 +34,7 @@
#include <com/sun/star/uno/Any.hxx>
-#ifndef _COM_SUN_STAR_AWT_FONTUNDERLINE_HPP
#include <com/sun/star/awt/FontUnderline.hpp>
-#endif
-
-#ifndef _XMLOFF_XMLEMENT_HXX
-#include <xmloff/xmlelement.hxx>
-#endif
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
diff --git a/xmloff/source/style/xmlimppr.cxx b/xmloff/source/style/xmlimppr.cxx
index e81e73cf90b2..812071ff1b03 100644
--- a/xmloff/source/style/xmlimppr.cxx
+++ b/xmloff/source/style/xmlimppr.cxx
@@ -40,7 +40,6 @@
#include <xmloff/xmlimppr.hxx>
#include <xmloff/xmlimp.hxx>
-#include "xmlkywd.hxx"
#include "unoatrcn.hxx"
#include "xmlnmspe.hxx"
#include <xmloff/xmltoken.hxx>
diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index d223ba19db05..a192baa2216b 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -2149,7 +2149,7 @@ sal_Bool lcl_IsAtEnd( rtl::OUStringBuffer& rBuffer, const String& rToken )
if ( nTokLen > nBufLen )
return sal_False;
- sal_Int32 nStartPos = nTokLen - nBufLen;
+ sal_Int32 nStartPos = nBufLen - nTokLen;
for ( xub_StrLen nTokPos = 0; nTokPos < nTokLen; nTokPos++ )
if ( rToken.GetChar( nTokPos ) != rBuffer.charAt( nStartPos + nTokPos ) )
return sal_False;
diff --git a/xmloff/source/text/XMLIndexTOCContext.cxx b/xmloff/source/text/XMLIndexTOCContext.cxx
index daf0703803d7..ad9f7ce10d7a 100644
--- a/xmloff/source/text/XMLIndexTOCContext.cxx
+++ b/xmloff/source/text/XMLIndexTOCContext.cxx
@@ -50,14 +50,11 @@
#include <xmloff/txtimp.hxx>
#include <xmloff/nmspmap.hxx>
#include "xmlnmspe.hxx"
-#include "xmlkywd.hxx"
#include <xmloff/xmltoken.hxx>
#include <xmloff/prstylei.hxx>
#include "xmlerror.hxx"
#include <xmloff/xmluconv.hxx>
-#include <tools/debug.hxx>
#include <rtl/ustring.hxx>
-#include <tools/debug.hxx>
using namespace ::com::sun::star::uno;
@@ -85,15 +82,15 @@ static const sal_Char* aIndexServiceMap[] =
"com.sun.star.text.IllustrationsIndex"
};
-static const sal_Char* aIndexSourceElementMap[] =
+static const XMLTokenEnum aIndexSourceElementMap[] =
{
- sXML_table_of_content_source,
- sXML_alphabetical_index_source,
- sXML_table_index_source,
- sXML_object_index_source,
- sXML_bibliography_source,
- sXML_user_index_source,
- sXML_illustration_index_source
+ XML_TABLE_OF_CONTENT_SOURCE,
+ XML_ALPHABETICAL_INDEX_SOURCE,
+ XML_TABLE_INDEX_SOURCE,
+ XML_OBJECT_INDEX_SOURCE,
+ XML_BIBLIOGRAPHY_SOURCE,
+ XML_USER_INDEX_SOURCE,
+ XML_ILLUSTRATION_INDEX_SOURCE
};
SvXMLEnumMapEntry __READONLY_DATA aIndexTypeMap[] =
@@ -117,7 +114,6 @@ XMLIndexTOCContext::XMLIndexTOCContext(
, sTitle(RTL_CONSTASCII_USTRINGPARAM("Title"))
, sIsProtected(RTL_CONSTASCII_USTRINGPARAM("IsProtected"))
, sName(RTL_CONSTASCII_USTRINGPARAM("Name"))
-, pSourceElementName(NULL)
, bValid(sal_False)
{
if (XML_NAMESPACE_TEXT == nPrfx)
@@ -126,13 +122,12 @@ XMLIndexTOCContext::XMLIndexTOCContext(
if (SvXMLUnitConverter::convertEnum(nTmp, rLocalName, aIndexTypeMap))
{
// check for array index:
- DBG_ASSERT(nTmp < (sizeof(aIndexServiceMap)/sizeof(sal_Char*)), "index out of range");
- DBG_ASSERT(sizeof(aIndexServiceMap) ==
+ OSL_ENSURE(nTmp < (sizeof(aIndexServiceMap)/sizeof(sal_Char*)), "index out of range");
+ OSL_ENSURE(sizeof(aIndexServiceMap) ==
sizeof(aIndexSourceElementMap),
"service and source element maps must be same size");
- eIndexType = (enum IndexTypeEnum)nTmp;
- pSourceElementName = aIndexSourceElementMap[eIndexType];
+ eIndexType = static_cast<IndexTypeEnum>(nTmp);
bValid = sal_True;
}
}
@@ -201,10 +196,6 @@ void XMLIndexTOCContext::StartElement(
OUString::createFromAscii(aIndexServiceMap[eIndexType]));
if( xIfc.is() )
{
-
- // xml:id for RDF metadata
- GetImport().SetXmlId(xIfc, sXmlId);
-
// get Property set
Reference<XPropertySet> xPropSet(xIfc, UNO_QUERY);
xTOCPropertySet = xPropSet;
@@ -246,6 +237,9 @@ void XMLIndexTOCContext::StartElement(
return;
}
+ // xml:id for RDF metadata
+ GetImport().SetXmlId(xIfc, sXmlId);
+
// b) insert marker and move cursor
rImport->InsertString(sMarker);
rImport->GetCursor()->goLeft(2, sal_False);
@@ -326,7 +320,7 @@ SvXMLImportContext* XMLIndexTOCContext::CreateChildContext(
xBodyContextRef = pContext;
}
}
- else if (0 == rLocalName.compareToAscii(pSourceElementName))
+ else if (IsXMLToken(rLocalName, aIndexSourceElementMap[eIndexType]))
{
// instantiate source context for the appropriate index type
switch (eIndexType)
@@ -367,7 +361,7 @@ SvXMLImportContext* XMLIndexTOCContext::CreateChildContext(
break;
default:
- DBG_ERROR("index type not implemented");
+ OSL_ENSURE(false, "index type not implemented");
break;
}
}
diff --git a/xmloff/source/text/XMLIndexTOCContext.hxx b/xmloff/source/text/XMLIndexTOCContext.hxx
index accaca5a3c53..66f045a5467d 100644
--- a/xmloff/source/text/XMLIndexTOCContext.hxx
+++ b/xmloff/source/text/XMLIndexTOCContext.hxx
@@ -73,9 +73,6 @@ class XMLIndexTOCContext : public SvXMLImportContext
enum IndexTypeEnum eIndexType;
- /** source element name (for CreateChildContext) */
- const sal_Char* pSourceElementName;
-
sal_Bool bValid;
SvXMLImportContextRef xBodyContextRef;
diff --git a/xmloff/source/text/XMLPropertyBackpatcher.cxx b/xmloff/source/text/XMLPropertyBackpatcher.cxx
index 45c5f63c6ec7..364096ad8185 100644
--- a/xmloff/source/text/XMLPropertyBackpatcher.cxx
+++ b/xmloff/source/text/XMLPropertyBackpatcher.cxx
@@ -30,9 +30,7 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/uno/Reference.h>
-#ifndef _RTL_USTRING
#include <rtl/ustring.hxx>
-#endif
#include <tools/debug.hxx>
#include "XMLPropertyBackpatcher.hxx"
#include <xmloff/txtimp.hxx> // XMLTextImportHelper partially implemented here
@@ -206,7 +204,34 @@ void XMLPropertyBackpatcher<A>::SetDefault()
template class XMLPropertyBackpatcher<sal_Int16>;
template class XMLPropertyBackpatcher<OUString>;
+struct SAL_DLLPRIVATE XMLTextImportHelper::BackpatcherImpl
+{
+ /// backpatcher for references to footnotes and endnotes
+ ::std::auto_ptr< XMLPropertyBackpatcher<sal_Int16> >
+ m_pFootnoteBackpatcher;
+
+ /// backpatchers for references to sequences
+ ::std::auto_ptr< XMLPropertyBackpatcher<sal_Int16> >
+ m_pSequenceIdBackpatcher;
+
+ ::std::auto_ptr< XMLPropertyBackpatcher< ::rtl::OUString> >
+ m_pSequenceNameBackpatcher;
+};
+
+::boost::shared_ptr<XMLTextImportHelper::BackpatcherImpl>
+XMLTextImportHelper::MakeBackpatcherImpl()
+{
+ // n.b.: the shared_ptr stores the dtor!
+ return ::boost::shared_ptr<BackpatcherImpl>(new BackpatcherImpl);
+}
+
+static ::rtl::OUString const& GetSequenceNumber()
+{
+ static ::rtl::OUString s_SequenceNumber(
+ RTL_CONSTASCII_USTRINGPARAM("SequenceNumber"));
+ return s_SequenceNumber;
+}
//
// XMLTextImportHelper
@@ -224,32 +249,34 @@ template class XMLPropertyBackpatcher<OUString>;
XMLPropertyBackpatcher<sal_Int16>& XMLTextImportHelper::GetFootnoteBP()
{
- if (NULL == pFootnoteBackpatcher)
+ if (!m_pBackpatcherImpl->m_pFootnoteBackpatcher.get())
{
- pFootnoteBackpatcher =
- new XMLPropertyBackpatcher<sal_Int16>(sSequenceNumber);
+ m_pBackpatcherImpl->m_pFootnoteBackpatcher.reset(
+ new XMLPropertyBackpatcher<sal_Int16>(GetSequenceNumber()));
}
- return *pFootnoteBackpatcher;
+ return *m_pBackpatcherImpl->m_pFootnoteBackpatcher;
}
XMLPropertyBackpatcher<sal_Int16>& XMLTextImportHelper::GetSequenceIdBP()
{
- if (NULL == pSequenceIdBackpatcher)
+ if (!m_pBackpatcherImpl->m_pSequenceIdBackpatcher.get())
{
- pSequenceIdBackpatcher =
- new XMLPropertyBackpatcher<sal_Int16>(sSequenceNumber);
+ m_pBackpatcherImpl->m_pSequenceIdBackpatcher.reset(
+ new XMLPropertyBackpatcher<sal_Int16>(GetSequenceNumber()));
}
- return *pSequenceIdBackpatcher;
+ return *m_pBackpatcherImpl->m_pSequenceIdBackpatcher;
}
XMLPropertyBackpatcher<OUString>& XMLTextImportHelper::GetSequenceNameBP()
{
- if (NULL == pSequenceNameBackpatcher)
+ static ::rtl::OUString s_SourceName(
+ RTL_CONSTASCII_USTRINGPARAM("SourceName"));
+ if (!m_pBackpatcherImpl->m_pSequenceNameBackpatcher.get())
{
- pSequenceNameBackpatcher =
- new XMLPropertyBackpatcher<OUString>(sSourceName);
+ m_pBackpatcherImpl->m_pSequenceNameBackpatcher.reset(
+ new XMLPropertyBackpatcher<OUString>(s_SourceName));
}
- return *pSequenceNameBackpatcher;
+ return *m_pBackpatcherImpl->m_pSequenceNameBackpatcher;
}
void XMLTextImportHelper::InsertFootnoteID(
@@ -283,9 +310,3 @@ void XMLTextImportHelper::ProcessSequenceReference(
GetSequenceNameBP().SetProperty(xPropSet, sXMLId);
}
-void XMLTextImportHelper::_FinitBackpatcher()
-{
- delete pFootnoteBackpatcher;
- delete pSequenceIdBackpatcher;
- delete pSequenceNameBackpatcher;
-}
diff --git a/xmloff/source/text/XMLSectionExport.cxx b/xmloff/source/text/XMLSectionExport.cxx
index 2129c54ad874..0a0437426a3c 100644
--- a/xmloff/source/text/XMLSectionExport.cxx
+++ b/xmloff/source/text/XMLSectionExport.cxx
@@ -28,7 +28,6 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_xmloff.hxx"
#include "XMLSectionExport.hxx"
-#include <tools/debug.hxx>
#include <rtl/ustring.hxx>
#include <rtl/ustrbuf.hxx>
@@ -53,7 +52,6 @@
#include <com/sun/star/text/XTextFieldsSupplier.hpp>
#include <com/sun/star/text/XChapterNumberingSupplier.hpp>
#include <com/sun/star/text/ChapterFormat.hpp> //i90246
-#include "xmlkywd.hxx"
#include <xmloff/xmltoken.hxx>
#include "xmlnmspe.hxx"
#include <xmloff/families.hxx>
@@ -306,7 +304,7 @@ void XMLSectionExport::ExportSectionEnd(
break;
default:
- DBG_ERROR("unknown index type");
+ OSL_ENSURE(false, "unknown index type");
// default: skip index!
break;
}
@@ -332,7 +330,7 @@ void XMLSectionExport::ExportSectionEnd(
}
else
{
- DBG_ERROR("Need element name!");
+ OSL_ENSURE(false, "Need element name!");
}
}
// else: autostyles -> ignore
@@ -376,7 +374,7 @@ void XMLSectionExport::ExportIndexStart(
default:
// skip index
- DBG_ERROR("unknown index type");
+ OSL_ENSURE(false, "unknown index type");
break;
}
}
@@ -809,15 +807,15 @@ void XMLSectionExport::ExportBaseIndexStart(
GetExport().StartElement( XML_NAMESPACE_TEXT, eElement, sal_False );
}
-static const sal_Char* aTypeSourceElementNameMap[] =
+static const XMLTokenEnum aTypeSourceElementNameMap[] =
{
- sXML_table_of_content_source, // TOC
- sXML_table_index_source, // table index
- sXML_illustration_index_source, // illustration index
- sXML_object_index_source, // object index
- sXML_user_index_source, // user index
- sXML_alphabetical_index_source, // alphabetical index
- sXML_bibliography_source // bibliography
+ XML_TABLE_OF_CONTENT_SOURCE, // TOC
+ XML_TABLE_INDEX_SOURCE, // table index
+ XML_ILLUSTRATION_INDEX_SOURCE, // illustration index
+ XML_OBJECT_INDEX_SOURCE, // object index
+ XML_USER_INDEX_SOURCE, // user index
+ XML_ALPHABETICAL_INDEX_SOURCE, // alphabetical index
+ XML_BIBLIOGRAPHY_SOURCE // bibliography
};
void XMLSectionExport::ExportBaseIndexSource(
@@ -825,8 +823,8 @@ void XMLSectionExport::ExportBaseIndexSource(
const Reference<XPropertySet> & rPropertySet)
{
// check type
- DBG_ASSERT(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type");
- DBG_ASSERT(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type");
+ OSL_ENSURE(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type");
+ OSL_ENSURE(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type");
Any aAny;
@@ -854,8 +852,9 @@ void XMLSectionExport::ExportBaseIndexSource(
// the index source element (all indices)
SvXMLElementExport aElem(GetExport(),
XML_NAMESPACE_TEXT,
- aTypeSourceElementNameMap[
- eType - TEXT_SECTION_TYPE_TOC],
+ GetXMLToken(
+ aTypeSourceElementNameMap[
+ eType - TEXT_SECTION_TYPE_TOC]),
sal_True, sal_True);
// scope for title template (all indices)
@@ -925,8 +924,8 @@ void XMLSectionExport::ExportBaseIndexBody(
const Reference<XPropertySet> &)
{
// type not used; checked anyway.
- DBG_ASSERT(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type");
- DBG_ASSERT(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type");
+ OSL_ENSURE(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type");
+ OSL_ENSURE(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type");
// export start only
@@ -969,23 +968,23 @@ void XMLSectionExport::ExportTableAndIllustrationIndexSourceAttributes(
// map index of LevelFormats to attribute value;
// level 0 is always the header
-static const sal_Char* aLevelNameTOCMap[] =
- { NULL, sXML_1, sXML_2, sXML_3, sXML_4, sXML_5, sXML_6, sXML_7,
- sXML_8, sXML_9, sXML_10, NULL };
-static const sal_Char* aLevelNameTableMap[] =
- { NULL, "", NULL };
-static const sal_Char* aLevelNameAlphaMap[] =
- { NULL, sXML_separator, sXML_1, sXML_2, sXML_3, NULL };
-static const sal_Char* aLevelNameBibliographyMap[] =
- { NULL, sXML_article, sXML_book, sXML_booklet, sXML_conference,
- sXML_custom1, sXML_custom2, sXML_custom3, sXML_custom4,
- sXML_custom5, sXML_email, sXML_inbook, sXML_incollection,
- sXML_inproceedings, sXML_journal,
- sXML_manual, sXML_mastersthesis, sXML_misc, sXML_phdthesis,
- sXML_proceedings, sXML_techreport, sXML_unpublished, sXML_www,
- NULL };
-
-static const sal_Char** aTypeLevelNameMap[] =
+static const XMLTokenEnum aLevelNameTOCMap[] =
+ { XML_TOKEN_INVALID, XML_1, XML_2, XML_3, XML_4, XML_5, XML_6, XML_7,
+ XML_8, XML_9, XML_10, XML_TOKEN_INVALID };
+static const XMLTokenEnum aLevelNameTableMap[] =
+ { XML_TOKEN_INVALID, XML__EMPTY, XML_TOKEN_INVALID };
+static const XMLTokenEnum aLevelNameAlphaMap[] =
+ { XML_TOKEN_INVALID, XML_SEPARATOR, XML_1, XML_2, XML_3, XML_TOKEN_INVALID };
+static const XMLTokenEnum aLevelNameBibliographyMap[] =
+ { XML_TOKEN_INVALID, XML_ARTICLE, XML_BOOK, XML_BOOKLET, XML_CONFERENCE,
+ XML_CUSTOM1, XML_CUSTOM2, XML_CUSTOM3, XML_CUSTOM4,
+ XML_CUSTOM5, XML_EMAIL, XML_INBOOK, XML_INCOLLECTION,
+ XML_INPROCEEDINGS, XML_JOURNAL,
+ XML_MANUAL, XML_MASTERSTHESIS, XML_MISC, XML_PHDTHESIS,
+ XML_PROCEEDINGS, XML_TECHREPORT, XML_UNPUBLISHED, XML_WWW,
+ XML_TOKEN_INVALID };
+
+static const XMLTokenEnum* aTypeLevelNameMap[] =
{
aLevelNameTOCMap, // TOC
aLevelNameTableMap, // table index
@@ -1029,26 +1028,26 @@ static const sal_Char** aTypeLevelStylePropNameMap[] =
aLevelStylePropNameBibliographyMap // bibliography
};
-static const sal_Char* aTypeLevelAttrMap[] =
+static const XMLTokenEnum aTypeLevelAttrMap[] =
{
- sXML_outline_level, // TOC
- NULL, // table index
- NULL, // illustration index
- NULL, // object index
- sXML_outline_level, // user index
- sXML_outline_level, // alphabetical index
- sXML_bibliography_type // bibliography
+ XML_OUTLINE_LEVEL, // TOC
+ XML_TOKEN_INVALID, // table index
+ XML_TOKEN_INVALID, // illustration index
+ XML_TOKEN_INVALID, // object index
+ XML_OUTLINE_LEVEL, // user index
+ XML_OUTLINE_LEVEL, // alphabetical index
+ XML_BIBLIOGRAPHY_TYPE // bibliography
};
-static const sal_Char* aTypeElementNameMap[] =
+static const XMLTokenEnum aTypeElementNameMap[] =
{
- sXML_table_of_content_entry_template, // TOC
- sXML_table_index_entry_template, // table index
- sXML_illustration_index_entry_template, // illustration index
- sXML_object_index_entry_template, // object index
- sXML_user_index_entry_template, // user index
- sXML_alphabetical_index_entry_template, // alphabetical index
- sXML_bibliography_entry_template // bibliography
+ XML_TABLE_OF_CONTENT_ENTRY_TEMPLATE, // TOC
+ XML_TABLE_INDEX_ENTRY_TEMPLATE, // table index
+ XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE, // illustration index
+ XML_OBJECT_INDEX_ENTRY_TEMPLATE, // object index
+ XML_USER_INDEX_ENTRY_TEMPLATE, // user index
+ XML_ALPHABETICAL_INDEX_ENTRY_TEMPLATE, // alphabetical index
+ XML_BIBLIOGRAPHY_ENTRY_TEMPLATE // bibliography
};
@@ -1058,44 +1057,44 @@ sal_Bool XMLSectionExport::ExportIndexTemplate(
const Reference<XPropertySet> & rPropertySet,
Sequence<Sequence<PropertyValue> > & rValues)
{
- DBG_ASSERT(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type");
- DBG_ASSERT(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type");
- DBG_ASSERT(nOutlineLevel >= 0, "illegal outline level");
+ OSL_ENSURE(eType >= TEXT_SECTION_TYPE_TOC, "illegal index type");
+ OSL_ENSURE(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY, "illegal index type");
+ OSL_ENSURE(nOutlineLevel >= 0, "illegal outline level");
if ( (eType >= TEXT_SECTION_TYPE_TOC) &&
(eType <= TEXT_SECTION_TYPE_BIBLIOGRAPHY) &&
(nOutlineLevel >= 0) )
{
// get level name and level attribute name from aLevelNameMap;
- const sal_Char* pLevelAttrName =
- aTypeLevelAttrMap[eType-TEXT_SECTION_TYPE_TOC];
- const sal_Char* pLevelName =
- aTypeLevelNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel];
+ const XMLTokenEnum eLevelAttrName(
+ aTypeLevelAttrMap[eType-TEXT_SECTION_TYPE_TOC]);
+ const XMLTokenEnum eLevelName(
+ aTypeLevelNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel]);
// #92124#: some old documents may be broken, then they have
// too many template levels; we need to recognize this and
// export only as many as is legal for the respective index
// type. To do this, we simply return an error flag, which
// will then abort further template level exports.
- DBG_ASSERT(NULL != pLevelName, "can't find level name");
- if ( NULL == pLevelName )
+ OSL_ENSURE(XML_TOKEN_INVALID != eLevelName, "can't find level name");
+ if ( XML_TOKEN_INVALID == eLevelName )
{
// output level not found? Then end of templates! #91214#
return sal_False;
}
// output level name
- if ((NULL != pLevelName) && (NULL != pLevelAttrName))
+ if ((XML_TOKEN_INVALID != eLevelName) && (XML_TOKEN_INVALID != eLevelAttrName))
{
- GetExport().AddAttributeASCII(XML_NAMESPACE_TEXT,
- pLevelAttrName,
- pLevelName);
+ GetExport().AddAttribute(XML_NAMESPACE_TEXT,
+ GetXMLToken(eLevelAttrName),
+ GetXMLToken(eLevelName));
}
// paragraph level style name
- const sal_Char* pPropName =
- aTypeLevelStylePropNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel];
- DBG_ASSERT(NULL != pPropName, "can't find property name");
+ const sal_Char* pPropName(
+ aTypeLevelStylePropNameMap[eType-TEXT_SECTION_TYPE_TOC][nOutlineLevel]);
+ OSL_ENSURE(NULL != pPropName, "can't find property name");
if (NULL != pPropName)
{
Any aAny = rPropertySet->getPropertyValue(
@@ -1108,11 +1107,11 @@ sal_Bool XMLSectionExport::ExportIndexTemplate(
}
// template element
- const sal_Char* pElementName =
- aTypeElementNameMap[eType - TEXT_SECTION_TYPE_TOC];
+ const XMLTokenEnum eElementName(
+ aTypeElementNameMap[eType - TEXT_SECTION_TYPE_TOC]);
SvXMLElementExport aLevelTemplate(GetExport(),
XML_NAMESPACE_TEXT,
- pElementName,
+ GetXMLToken(eElementName),
sal_True, sal_True);
// export sequence
@@ -1353,39 +1352,46 @@ void XMLSectionExport::ExportIndexTemplateElement(
}
// convert type to token (and check validity) ...
- sal_Char* pElement = NULL;
+ XMLTokenEnum eElement(XML_TOKEN_INVALID);
switch(nTokenType)
{
case TOK_TTYPE_ENTRY_TEXT:
- pElement = sXML_index_entry_text;
+ eElement = XML_INDEX_ENTRY_TEXT;
break;
case TOK_TTYPE_TAB_STOP:
// test validity
- pElement = ( bRightAligned || bTabPositionOK || bFillCharOK )
- ? sXML_index_entry_tab_stop : NULL;
+ if ( bRightAligned || bTabPositionOK || bFillCharOK )
+ {
+ eElement = XML_INDEX_ENTRY_TAB_STOP;
+ }
break;
case TOK_TTYPE_TEXT:
// test validity
- pElement = bTextOK ? sXML_index_entry_span : NULL;
+ if (bTextOK)
+ {
+ eElement = XML_INDEX_ENTRY_SPAN;
+ }
break;
case TOK_TTYPE_PAGE_NUMBER:
- pElement = sXML_index_entry_page_number;
+ eElement = XML_INDEX_ENTRY_PAGE_NUMBER;
break;
case TOK_TTYPE_CHAPTER_INFO: // keyword index
- pElement = sXML_index_entry_chapter;
+ eElement = XML_INDEX_ENTRY_CHAPTER;
break;
case TOK_TTYPE_ENTRY_NUMBER: // table of content
- pElement = sXML_index_entry_chapter;
+ eElement = XML_INDEX_ENTRY_CHAPTER;
break;
case TOK_TTYPE_HYPERLINK_START:
- pElement = sXML_index_entry_link_start;
+ eElement = XML_INDEX_ENTRY_LINK_START;
break;
case TOK_TTYPE_HYPERLINK_END:
- pElement = sXML_index_entry_link_end;
+ eElement = XML_INDEX_ENTRY_LINK_END;
break;
case TOK_TTYPE_BIBLIOGRAPHY:
- pElement = bBibliographyDataOK
- ? sXML_index_entry_bibliography : NULL;
+ if (bBibliographyDataOK)
+ {
+ eElement = XML_INDEX_ENTRY_BIBLIOGRAPHY;
+ }
break;
default:
; // unknown/unimplemented template
@@ -1404,7 +1410,7 @@ void XMLSectionExport::ExportIndexTemplateElement(
//it's not permitted in other indexes
if (eType != TEXT_SECTION_TYPE_ALPHABETICAL)
{
- pElement = NULL; //not permitted, null the element
+ eElement = XML_TOKEN_INVALID; //not permitted, invalidate the element
}
else //maps format for 1.1 & 1.0
{
@@ -1447,7 +1453,7 @@ void XMLSectionExport::ExportIndexTemplateElement(
//<---
// ... and write Element
- if (pElement != NULL)
+ if (eElement != XML_TOKEN_INVALID)
{
// character style (for most templates)
if (bCharStyleOK)
@@ -1510,7 +1516,7 @@ void XMLSectionExport::ExportIndexTemplateElement(
// bibliography data
if (TOK_TTYPE_BIBLIOGRAPHY == nTokenType)
{
- DBG_ASSERT(bBibliographyDataOK, "need bibl data");
+ OSL_ENSURE(bBibliographyDataOK, "need bibl data");
OUStringBuffer sBuf;
if (SvXMLUnitConverter::convertEnum( sBuf, nBibliographyData,
aBibliographyDataFieldMap ) )
@@ -1524,7 +1530,7 @@ void XMLSectionExport::ExportIndexTemplateElement(
// chapter info
if (TOK_TTYPE_CHAPTER_INFO == nTokenType)
{
- DBG_ASSERT(bChapterFormatOK, "need chapter info");
+ OSL_ENSURE(bChapterFormatOK, "need chapter info");
GetExport().AddAttribute(
XML_NAMESPACE_TEXT, XML_DISPLAY,
XMLTextFieldExport::MapChapterDisplayFormat(nChapterFormat));
@@ -1550,7 +1556,9 @@ void XMLSectionExport::ExportIndexTemplateElement(
//<---
// export template
SvXMLElementExport aTemplateElement(GetExport(), XML_NAMESPACE_TEXT,
- pElement, sal_True, sal_False);
+ GetXMLToken(eElement),
+ sal_True, sal_False)
+ ;
// entry text or span element: write text
if (TOK_TTYPE_TEXT == nTokenType)
@@ -1614,7 +1622,7 @@ void XMLSectionExport::ExportBoolean(
sal_Bool bDefault,
sal_Bool bInvert)
{
- DBG_ASSERT(eAttributeName != XML_TOKEN_INVALID, "Need attribute name");
+ OSL_ENSURE(eAttributeName != XML_TOKEN_INVALID, "Need attribute name");
Any aAny = rPropSet->getPropertyValue(sPropertyName);
sal_Bool bTmp = *(sal_Bool*)aAny.getValue();
@@ -1656,7 +1664,7 @@ void XMLSectionExport::ExportBibliographyConfiguration(SvXMLExport& rExport)
Reference<XPropertySet> xPropSet;
aAny >>= xPropSet;
- DBG_ASSERT( xPropSet.is(), "field master must have XPropSet" );
+ OSL_ENSURE( xPropSet.is(), "field master must have XPropSet" );
const OUString sBracketBefore(
RTL_CONSTASCII_USTRINGPARAM("BracketBefore"));
@@ -1843,7 +1851,7 @@ sal_Bool XMLSectionExport::IsInSection(
{
// default: like default argument
sal_Bool bRet = bDefault;
- DBG_ASSERT(rEnclosingSection.is(), "enclosing section expected");
+ OSL_ENSURE(rEnclosingSection.is(), "enclosing section expected");
Reference<XPropertySet> xPropSet(rContent, UNO_QUERY);
if (xPropSet.is())
diff --git a/xmloff/source/text/XMLSectionImportContext.cxx b/xmloff/source/text/XMLSectionImportContext.cxx
index f31ce783565f..4b9b94b1ced7 100644
--- a/xmloff/source/text/XMLSectionImportContext.cxx
+++ b/xmloff/source/text/XMLSectionImportContext.cxx
@@ -161,9 +161,6 @@ void XMLSectionImportContext::StartElement(
// save PropertySet (for CreateChildContext)
xSectionPropertySet = xPropSet;
- // xml:id for RDF metadata
- GetImport().SetXmlId(xIfc, sXmlId);
-
// name
Reference<XNamed> xNamed(xPropSet, UNO_QUERY);
xNamed->setName(sName);
@@ -253,6 +250,9 @@ void XMLSectionImportContext::StartElement(
// finally, check for redlines that should start at
// the section start node
rHelper->RedlineAdjustStartNodeCursor(sal_True); // start ???
+
+ // xml:id for RDF metadata
+ GetImport().SetXmlId(xIfc, sXmlId);
}
}
}
diff --git a/xmloff/source/text/XMLTextFrameContext.cxx b/xmloff/source/text/XMLTextFrameContext.cxx
index c15bb1a64055..accaa49d5ea4 100644
--- a/xmloff/source/text/XMLTextFrameContext.cxx
+++ b/xmloff/source/text/XMLTextFrameContext.cxx
@@ -43,7 +43,6 @@
#include <xmloff/xmlimp.hxx>
#include <xmloff/xmltoken.hxx>
#include "xmlnmspe.hxx"
-#include "xmlkywd.hxx"
#include <xmloff/nmspmap.hxx>
#include <xmloff/xmluconv.hxx>
#include "XMLAnchorTypePropHdl.hxx"
@@ -1032,10 +1031,11 @@ XMLTextFrameContext_Impl::XMLTextFrameContext_Impl(
{
OUString sValue( rValue );
sValue.trim();
- const sal_Int32 nRotateLen = sizeof(sXML_rotate)-1;
+ const OUString aRotate(GetXMLToken(XML_ROTATE));
+ const sal_Int32 nRotateLen(aRotate.getLength());
sal_Int32 nLen = sValue.getLength();
if( nLen >= nRotateLen+3 &&
- 0 == sValue.compareToAscii( sXML_rotate, nRotateLen ) &&
+ 0 == sValue.compareTo( aRotate, nRotateLen ) &&
'(' == sValue[nRotateLen] &&
')' == sValue[nLen-1] )
{
@@ -1241,6 +1241,14 @@ void XMLTextFrameContext_Impl::SetHyperlink( const OUString& rHRef,
const OUString& rTargetFrameName,
sal_Bool bMap )
{
+ static ::rtl::OUString s_HyperLinkURL(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL"));
+ static ::rtl::OUString s_HyperLinkName(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkName"));
+ static ::rtl::OUString s_HyperLinkTarget(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget"));
+ static ::rtl::OUString s_ServerMap(
+ RTL_CONSTASCII_USTRINGPARAM("ServerMap"));
if( !xPropSet.is() )
return;
@@ -1248,29 +1256,29 @@ void XMLTextFrameContext_Impl::SetHyperlink( const OUString& rHRef,
Reference < XPropertySetInfo > xPropSetInfo =
xPropSet->getPropertySetInfo();
if( !xPropSetInfo.is() ||
- !xPropSetInfo->hasPropertyByName( xTxtImp->sHyperLinkURL ) )
+ !xPropSetInfo->hasPropertyByName(s_HyperLinkURL))
return;
Any aAny;
aAny <<= rHRef;
- xPropSet->setPropertyValue( xTxtImp->sHyperLinkURL, aAny );
+ xPropSet->setPropertyValue( s_HyperLinkURL, aAny );
- if( xPropSetInfo->hasPropertyByName( xTxtImp->sHyperLinkName ) )
+ if (xPropSetInfo->hasPropertyByName(s_HyperLinkName))
{
aAny <<= rName;
- xPropSet->setPropertyValue( xTxtImp->sHyperLinkName, aAny );
+ xPropSet->setPropertyValue(s_HyperLinkName, aAny);
}
- if( xPropSetInfo->hasPropertyByName( xTxtImp->sHyperLinkTarget ) )
+ if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget))
{
aAny <<= rTargetFrameName;
- xPropSet->setPropertyValue( xTxtImp->sHyperLinkTarget, aAny );
+ xPropSet->setPropertyValue( s_HyperLinkTarget, aAny );
}
- if( xPropSetInfo->hasPropertyByName( xTxtImp->sServerMap ) )
+ if (xPropSetInfo->hasPropertyByName(s_ServerMap))
{
aAny.setValue( &bMap, ::getBooleanCppuType() );
- xPropSet->setPropertyValue( xTxtImp->sServerMap, aAny );
+ xPropSet->setPropertyValue(s_ServerMap, aAny);
}
}
diff --git a/xmloff/source/text/XMLTextListBlockContext.cxx b/xmloff/source/text/XMLTextListBlockContext.cxx
index fdf1da1c9aff..fd2cb58b257f 100644
--- a/xmloff/source/text/XMLTextListBlockContext.cxx
+++ b/xmloff/source/text/XMLTextListBlockContext.cxx
@@ -79,6 +79,8 @@ XMLTextListBlockContext::XMLTextListBlockContext(
, msContinueListId()
// <--
{
+ static ::rtl::OUString s_PropNameDefaultListId(
+ RTL_CONSTASCII_USTRINGPARAM("DefaultListId"));
{
// get the parent list block context (if any); this is a bit ugly...
XMLTextListBlockContext * pLB(0);
@@ -180,10 +182,12 @@ XMLTextListBlockContext::XMLTextListBlockContext(
{
uno::Reference< beans::XPropertySetInfo > xNumRulePropSetInfo(
xNumRuleProps->getPropertySetInfo());
- if ( xNumRulePropSetInfo.is() &&
- xNumRulePropSetInfo->hasPropertyByName( mrTxtImport.sPropNameDefaultListId) )
+ if (xNumRulePropSetInfo.is() &&
+ xNumRulePropSetInfo->hasPropertyByName(
+ s_PropNameDefaultListId))
{
- xNumRuleProps->getPropertyValue( mrTxtImport.sPropNameDefaultListId ) >>= sListStyleDefaultListId;
+ xNumRuleProps->getPropertyValue(s_PropNameDefaultListId)
+ >>= sListStyleDefaultListId;
DBG_ASSERT( sListStyleDefaultListId.getLength() != 0,
"no default list id found at numbering rules instance. Serious defect -> please inform OD." );
}
diff --git a/xmloff/source/text/XMLTextListItemContext.cxx b/xmloff/source/text/XMLTextListItemContext.cxx
index 2f26f15c7c5c..b9a6dc1915e5 100644
--- a/xmloff/source/text/XMLTextListItemContext.cxx
+++ b/xmloff/source/text/XMLTextListItemContext.cxx
@@ -69,6 +69,8 @@ XMLTextListItemContext::XMLTextListItemContext(
mxNumRulesOverride()
// <--
{
+ static ::rtl::OUString s_NumberingRules(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingRules"));
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
{
@@ -105,7 +107,7 @@ XMLTextListItemContext::XMLTextListItemContext(
aAny >>= xStyle;
uno::Reference< beans::XPropertySet > xPropSet( xStyle, UNO_QUERY );
- aAny = xPropSet->getPropertyValue( rTxtImp.sNumberingRules );
+ aAny = xPropSet->getPropertyValue(s_NumberingRules);
aAny >>= mxNumRulesOverride;
}
else
diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx
index 91fe01dfcc3a..af51f5f56d98 100644
--- a/xmloff/source/text/XMLTextMarkImportContext.cxx
+++ b/xmloff/source/text/XMLTextMarkImportContext.cxx
@@ -49,10 +49,13 @@
#include <com/sun/star/text/XFormField.hpp>
+#include "RDFaImportHelper.hxx"
+
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
+using namespace ::com::sun::star;
using namespace ::com::sun::star::text;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
@@ -113,7 +116,6 @@ XMLTextMarkImportContext::XMLTextMarkImportContext(
const OUString& rLocalName )
: SvXMLImportContext(rImport, nPrefix, rLocalName)
, m_rHelper(rHlp)
- , m_bHaveAbout(false)
{
}
@@ -190,13 +192,13 @@ void XMLTextMarkImportContext::EndElement()
{
SvXMLImportContext::EndElement();
- const OUString sAPI_reference_mark(
+ static const OUString sAPI_reference_mark(
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.ReferenceMark"));
- const OUString sAPI_bookmark(
+ static const OUString sAPI_bookmark(
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Bookmark"));
- const OUString sAPI_fieldmark(
+ static const OUString sAPI_fieldmark(
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Fieldmark"));
- const OUString sAPI_formfieldmark(
+ static const OUString sAPI_formfieldmark(
RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.FormFieldmark"));
if (m_sBookmarkName.getLength() > 0)
@@ -228,13 +230,6 @@ void XMLTextMarkImportContext::EndElement()
m_sBookmarkName,
m_rHelper.GetCursorAsRange()->getStart(),
m_sXmlId) );
- if (m_bHaveAbout)
- {
- const Reference<com::sun::star::rdf::XMetadatable>
- xMeta( xContent, UNO_QUERY);
- GetImport().AddRDFa(xMeta,
- m_sAbout, m_sProperty, m_sContent, m_sDatatype);
- }
if ((lcl_MarkType)nTmp==TypeFieldmark) {
if (xContent.is() && bImportAsField) {
// setup fieldmark...
@@ -252,9 +247,22 @@ void XMLTextMarkImportContext::EndElement()
case TypeFieldmarkStart:
case TypeBookmarkStart:
// save XTextRange for later construction of bookmark
- m_rHelper.InsertBookmarkStartRange(
- m_sBookmarkName, m_rHelper.GetCursorAsRange()->getStart(),
- m_sXmlId);
+ {
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes >
+ pRDFaAttributes;
+ if (m_bHaveAbout && (TypeBookmarkStart
+ == static_cast<lcl_MarkType>(nTmp)))
+ {
+ pRDFaAttributes =
+ GetImport().GetRDFaImportHelper().ParseRDFa(
+ m_sAbout, m_sProperty,
+ m_sContent, m_sDatatype);
+ }
+ m_rHelper.InsertBookmarkStartRange(
+ m_sBookmarkName,
+ m_rHelper.GetCursorAsRange()->getStart(),
+ m_sXmlId, pRDFaAttributes);
+ }
break;
case TypeFieldmarkEnd:
@@ -262,8 +270,11 @@ void XMLTextMarkImportContext::EndElement()
{
// get old range, and construct
Reference<XTextRange> xStartRange;
- if (m_rHelper.FindAndRemoveBookmarkStartRange(m_sBookmarkName,
- xStartRange, m_sXmlId))
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes >
+ pRDFaAttributes;
+ if (m_rHelper.FindAndRemoveBookmarkStartRange(
+ m_sBookmarkName, xStartRange,
+ m_sXmlId, pRDFaAttributes))
{
Reference<XTextRange> xEndRange(
m_rHelper.GetCursorAsRange()->getStart());
@@ -295,12 +306,12 @@ void XMLTextMarkImportContext::EndElement()
m_sBookmarkName,
xInsertionRange,
m_sXmlId) );
- if (m_bHaveAbout)
+ if (pRDFaAttributes)
{
- const Reference<com::sun::star::rdf::XMetadatable>
- xMeta( xContent, UNO_QUERY);
- GetImport().AddRDFa(xMeta,
- m_sAbout, m_sProperty, m_sContent, m_sDatatype);
+ const Reference<rdf::XMetadatable>
+ xMeta(xContent, UNO_QUERY);
+ GetImport().GetRDFaImportHelper().AddRDFa(
+ xMeta, pRDFaAttributes);
}
if ((lcl_MarkType)nTmp==TypeFieldmarkEnd) {
diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx
index 335276a6865d..579ad91ddfe9 100644
--- a/xmloff/source/text/txtfldi.cxx
+++ b/xmloff/source/text/txtfldi.cxx
@@ -212,87 +212,6 @@ const sal_Char sAPI_TextRange[] = "TextRange";
const sal_Char sAPI_true[] = "TRUE";
-static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] =
-{
- { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED },
- { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION },
- { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP },
- { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT },
- { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE,
- XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE },
- { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME },
- { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA },
- { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT },
- { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC,
- XML_TOK_TEXTFIELD_NUM_LETTER_SYNC },
- { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA,
- XML_TOK_TEXTFIELD_DISPLAY_FORMULA },
- { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type
- { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE },
- { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
- { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
- { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
- { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
- { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
- { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
- { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
- { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
- { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE},
- { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY},
- { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
- XML_TOK_TEXTFIELD_DATA_STYLE_NAME },
- { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL,
- XML_TOK_TEXTFIELD_NUMBERING_LEVEL },
- { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER,
- XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR },
- { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY },
- { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST },
- { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST },
- { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST },
- { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE },
- { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME},
- { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME },
- { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME },
- { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER },
- { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION },
- { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE,
- XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE },
- { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE,
- XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE },
- { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION },
- { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL},
- { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE },
- { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS },
- { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT,
- XML_TOK_TEXTFIELD_REFERENCE_FORMAT },
- { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME },
- { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME,
- XML_TOK_TEXTFIELD_CONNECTION_NAME },
- { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF },
- { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME,
- XML_TOK_TEXTFIELD_TARGET_FRAME },
- { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION },
- { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE },
- { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND },
- { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN },
- { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE,
- XML_TOK_TEXTFIELD_CURRENT_VALUE },
- { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE },
-
- XML_TOKEN_MAP_END
-};
-
-const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap()
-{
- if ( !pTextFieldAttrTokenMap.get() ) {
- pTextFieldAttrTokenMap.reset(
- new SvXMLTokenMap(aTextFieldAttrTokenMap) );
- }
-
- return *pTextFieldAttrTokenMap;
-
-}
-
TYPEINIT1( XMLTextFieldImportContext, SvXMLImportContext);
XMLTextFieldImportContext::XMLTextFieldImportContext(
diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx
index cd09ba7f646f..8c5cf9e83237 100644
--- a/xmloff/source/text/txtimp.cxx
+++ b/xmloff/source/text/txtimp.cxx
@@ -27,6 +27,12 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_xmloff.hxx"
+
+#include <vector>
+
+#include <boost/scoped_array.hpp>
+#include <boost/tuple/tuple.hpp>
+
#include <tools/solar.h>
#include <tools/debug.hxx>
#ifndef _SVSTDARR_STRINGSDTOR_DECL
@@ -45,6 +51,7 @@
#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
#include <com/sun/star/text/TextContentAnchorType.hpp>
#include <com/sun/star/text/XTextFrame.hpp>
+#include <com/sun/star/text/XFormField.hpp>
#include <com/sun/star/drawing/XShapes.hpp>
#include <com/sun/star/util/DateTime.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -56,6 +63,8 @@
#include <xmloff/families.hxx>
#include <xmloff/xmlnumfi.hxx>
#include <xmloff/xmlnumi.hxx>
+#include <xmloff/xmlictxt.hxx>
+#include <xmloff/xmlimppr.hxx>
#include "txtparai.hxx"
#include <xmloff/txtimp.hxx>
@@ -97,6 +106,7 @@ using ::rtl::OUStringBuffer;
using ::com::sun::star::ucb::XAnyCompare;
using namespace ::std;
+using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::text;
@@ -444,9 +454,436 @@ static __FAR_DATA SvXMLTokenMapEntry aTextMasterPageElemTokenMap[] =
XML_TOKEN_MAP_END
};
+static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED },
+ { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION },
+ { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP },
+ { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT },
+ { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE,
+ XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE },
+ { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME },
+ { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA },
+ { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT },
+ { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC,
+ XML_TOK_TEXTFIELD_NUM_LETTER_SYNC },
+ { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA,
+ XML_TOK_TEXTFIELD_DISPLAY_FORMULA },
+ { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type
+ { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE },
+ { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
+ { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
+ { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
+ { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
+ { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
+ { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
+ { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
+ { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
+ { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE},
+ { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY},
+ { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
+ XML_TOK_TEXTFIELD_DATA_STYLE_NAME },
+ { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL,
+ XML_TOK_TEXTFIELD_NUMBERING_LEVEL },
+ { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER,
+ XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR },
+ { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY },
+ { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST },
+ { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST },
+ { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST },
+ { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE },
+ { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME},
+ { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME },
+ { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME },
+ { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER },
+ { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION },
+ { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE,
+ XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE },
+ { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE,
+ XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE },
+ { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION },
+ { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL},
+ { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE },
+ { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS },
+ { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT,
+ XML_TOK_TEXTFIELD_REFERENCE_FORMAT },
+ { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME },
+ { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME,
+ XML_TOK_TEXTFIELD_CONNECTION_NAME },
+ { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF },
+ { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME,
+ XML_TOK_TEXTFIELD_TARGET_FRAME },
+ { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION },
+ { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE },
+ { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND },
+ { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN },
+ { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE,
+ XML_TOK_TEXTFIELD_CURRENT_VALUE },
+ { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE },
+
+ XML_TOKEN_MAP_END
+};
+
+
// maximum allowed length of combined characters field
#define MAX_COMBINED_CHARACTERS 6
+struct SAL_DLLPRIVATE XMLTextImportHelper::Impl
+ : private ::boost::noncopyable
+{
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextElemTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextPElemTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextPAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextFieldAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextNumberedParagraphAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockElemTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextFrameAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextContourAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextHyperlinkAttrTokenMap;
+ ::std::auto_ptr<SvXMLTokenMap> m_pTextMasterPageElemTokenMap;
+ ::std::auto_ptr<SvStringsDtor> m_pPrevFrmNames;
+ ::std::auto_ptr<SvStringsDtor> m_pNextFrmNames;
+
+ // --> OD 2008-04-25 #refactorlists#
+ ::std::auto_ptr<XMLTextListsHelper> m_pTextListsHelper;
+ // <--
+
+ SvXMLImportContextRef m_xAutoStyles;
+ SvXMLImportContextRef m_xFontDecls;
+
+ XMLSectionList_Impl m_SectionList;
+
+ UniReference< SvXMLImportPropertyMapper > m_xParaImpPrMap;
+ UniReference< SvXMLImportPropertyMapper > m_xTextImpPrMap;
+ UniReference< SvXMLImportPropertyMapper > m_xFrameImpPrMap;
+ UniReference< SvXMLImportPropertyMapper > m_xSectionImpPrMap;
+ UniReference< SvXMLImportPropertyMapper > m_xRubyImpPrMap;
+
+ ::std::auto_ptr<SvI18NMap> m_pRenameMap;
+ // --> OD 2006-10-12 #i69629# - change and extend data structure:
+ // - data structure contains candidates of paragraph styles, which
+ // will be assigned to the outline style
+ // - data structure contains more than one candidate for each list level
+ // of the outline style
+ ::boost::scoped_array< ::std::vector< ::rtl::OUString > >
+ m_pOutlineStylesCandidates;
+ // <--
+
+ // start range, xml:id, RDFa stuff
+ typedef ::boost::tuple<
+ uno::Reference<text::XTextRange>, ::rtl::OUString,
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > >
+ BookmarkMapEntry_t;
+ /// start ranges for open bookmarks
+ ::std::map< ::rtl::OUString, BookmarkMapEntry_t,
+ ::comphelper::UStringLess> m_BookmarkStartRanges;
+
+ typedef ::std::vector< ::rtl::OUString > BookmarkVector_t;
+ BookmarkVector_t m_BookmarkVector;
+
+ /// name of the last 'open' redline that started between paragraphs
+ ::rtl::OUString m_sOpenRedlineIdentifier;
+
+ uno::Reference<text::XText> m_xText;
+ uno::Reference<text::XTextCursor> m_xCursor;
+ uno::Reference<text::XTextRange> m_xCursorAsRange;
+ uno::Reference<container::XNameContainer> m_xParaStyles;
+ uno::Reference<container::XNameContainer> m_xTextStyles;
+ uno::Reference<container::XNameContainer> m_xNumStyles;
+ uno::Reference<container::XNameContainer> m_xFrameStyles;
+ uno::Reference<container::XNameContainer> m_xPageStyles;
+ uno::Reference<container::XIndexReplace> m_xChapterNumbering;
+ uno::Reference<container::XNameAccess> m_xTextFrames;
+ uno::Reference<container::XNameAccess> m_xGraphics;
+ uno::Reference<container::XNameAccess> m_xObjects;
+ uno::Reference<lang::XMultiServiceFactory> m_xServiceFactory;
+
+ SvXMLImport & m_rSvXMLImport;
+
+ bool m_bInsertMode : 1;
+ bool m_bStylesOnlyMode : 1;
+ bool m_bBlockMode : 1;
+ bool m_bProgress : 1;
+ bool m_bOrganizerMode : 1;
+ bool m_bBodyContentStarted : 1;
+
+ // #107848#
+ // One more flag to remember if we are inside a deleted redline section
+ bool m_bInsideDeleteContext : 1;
+
+ typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t;
+ typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t;
+ typedef ::std::vector< field_param_t > field_params_t;
+ typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t;
+ typedef ::std::stack< field_stack_item_t > field_stack_t;
+
+ field_stack_t m_FieldStack;
+
+ ::rtl::OUString m_sCellParaStyleDefault;
+
+ Impl( uno::Reference<frame::XModel> const& rModel,
+ SvXMLImport & rImport,
+ bool const bInsertMode, bool const bStylesOnlyMode,
+ bool const bProgress, bool const bBlockMode,
+ bool const bOrganizerMode)
+ : m_pTextElemTokenMap( 0 )
+ , m_pTextPElemTokenMap( 0 )
+ , m_pTextPAttrTokenMap( 0 )
+ , m_pTextFieldAttrTokenMap( 0 )
+ , m_pTextNumberedParagraphAttrTokenMap( 0 )
+ , m_pTextListBlockAttrTokenMap( 0 )
+ , m_pTextListBlockElemTokenMap( 0 )
+ , m_pTextFrameAttrTokenMap( 0 )
+ , m_pTextContourAttrTokenMap( 0 )
+ , m_pTextHyperlinkAttrTokenMap( 0 )
+ , m_pTextMasterPageElemTokenMap( 0 )
+ , m_pPrevFrmNames( 0 )
+ , m_pNextFrmNames( 0 )
+ // --> OD 2008-04-25 #refactorlists#
+ , m_pTextListsHelper( new XMLTextListsHelper() )
+ // <--
+ , m_pRenameMap( 0 )
+ // --> OD 2006-10-12 #i69629#
+ , m_pOutlineStylesCandidates( 0 )
+ // <--
+ , m_xServiceFactory( rModel, UNO_QUERY )
+ , m_rSvXMLImport( rImport )
+ , m_bInsertMode( bInsertMode )
+ , m_bStylesOnlyMode( bStylesOnlyMode )
+ , m_bBlockMode( bBlockMode )
+ , m_bProgress( bProgress )
+ , m_bOrganizerMode( bOrganizerMode )
+ , m_bBodyContentStarted( true )
+ // #107848# Initialize inside_deleted_section flag correctly
+ , m_bInsideDeleteContext( false )
+ {
+ }
+
+ void InitOutlineStylesCandidates()
+ {
+ if (!m_pOutlineStylesCandidates)
+ {
+ size_t const size(m_xChapterNumbering->getCount());
+ m_pOutlineStylesCandidates.reset(
+ new ::std::vector< ::rtl::OUString >[size] );
+ }
+ }
+
+};
+
+
+uno::Reference< text::XText > & XMLTextImportHelper::GetText()
+{
+ return m_pImpl->m_xText;
+}
+
+uno::Reference< text::XTextCursor > & XMLTextImportHelper::GetCursor()
+{
+ return m_pImpl->m_xCursor;
+}
+
+uno::Reference< text::XTextRange > & XMLTextImportHelper::GetCursorAsRange()
+{
+ return m_pImpl->m_xCursorAsRange;
+}
+
+bool XMLTextImportHelper::IsInsertMode() const
+{
+ return m_pImpl->m_bInsertMode;
+}
+
+bool XMLTextImportHelper::IsStylesOnlyMode() const
+{
+ return m_pImpl->m_bStylesOnlyMode;
+}
+
+bool XMLTextImportHelper::IsBlockMode() const
+{
+ return m_pImpl->m_bBlockMode;
+}
+
+bool XMLTextImportHelper::IsOrganizerMode() const
+{
+ return m_pImpl->m_bOrganizerMode;
+}
+
+bool XMLTextImportHelper::IsProgress() const
+{
+ return m_pImpl->m_bProgress;
+}
+
+XMLSectionList_Impl & XMLTextImportHelper::GetSectionList()
+{
+ return m_pImpl->m_SectionList;
+}
+
+uno::Reference<container::XNameContainer> const&
+XMLTextImportHelper::GetParaStyles() const
+{
+ return m_pImpl->m_xParaStyles;
+}
+
+uno::Reference<container::XNameContainer> const&
+XMLTextImportHelper::GetTextStyles() const
+{
+ return m_pImpl->m_xTextStyles;
+}
+
+uno::Reference<container::XNameContainer> const&
+XMLTextImportHelper::GetNumberingStyles() const
+{
+ return m_pImpl->m_xNumStyles;
+}
+
+uno::Reference<container::XNameContainer> const&
+XMLTextImportHelper::GetFrameStyles() const
+{
+ return m_pImpl->m_xFrameStyles;
+}
+
+uno::Reference<container::XNameContainer> const&
+XMLTextImportHelper::GetPageStyles() const
+{
+ return m_pImpl->m_xPageStyles;
+}
+
+uno::Reference<container::XIndexReplace> const&
+XMLTextImportHelper::GetChapterNumbering() const
+{
+ return m_pImpl->m_xChapterNumbering;
+}
+
+UniReference< SvXMLImportPropertyMapper > const&
+XMLTextImportHelper::GetParaImportPropertySetMapper() const
+{
+ return m_pImpl->m_xParaImpPrMap;
+}
+
+UniReference< SvXMLImportPropertyMapper > const&
+XMLTextImportHelper::GetTextImportPropertySetMapper() const
+{
+ return m_pImpl->m_xTextImpPrMap;
+}
+
+UniReference< SvXMLImportPropertyMapper > const&
+XMLTextImportHelper::GetFrameImportPropertySetMapper() const
+{
+ return m_pImpl->m_xFrameImpPrMap;
+}
+
+UniReference< SvXMLImportPropertyMapper > const&
+XMLTextImportHelper::GetSectionImportPropertySetMapper() const
+{
+ return m_pImpl->m_xSectionImpPrMap;
+}
+
+UniReference< SvXMLImportPropertyMapper > const&
+XMLTextImportHelper::GetRubyImportPropertySetMapper() const
+{
+ return m_pImpl->m_xRubyImpPrMap;
+}
+
+void XMLTextImportHelper::SetInsideDeleteContext(bool const bNew)
+{
+ m_pImpl->m_bInsideDeleteContext = bNew;
+}
+
+bool XMLTextImportHelper::IsInsideDeleteContext() const
+{
+ return m_pImpl->m_bInsideDeleteContext;
+}
+
+SvXMLImport & XMLTextImportHelper::GetXMLImport()
+{
+ return m_pImpl->m_rSvXMLImport;
+}
+
+XMLTextListsHelper & XMLTextImportHelper::GetTextListHelper()
+{
+ return *m_pImpl->m_pTextListsHelper;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap()
+{
+ if (!m_pImpl->m_pTextElemTokenMap.get())
+ {
+ m_pImpl->m_pTextElemTokenMap.reset(
+ new SvXMLTokenMap( aTextElemTokenMap ));
+ }
+ return *m_pImpl->m_pTextElemTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap()
+{
+ if (!m_pImpl->m_pTextPElemTokenMap.get())
+ {
+ m_pImpl->m_pTextPElemTokenMap.reset(
+ new SvXMLTokenMap( aTextPElemTokenMap ));
+ }
+ return *m_pImpl->m_pTextPElemTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap()
+{
+ if (!m_pImpl->m_pTextPAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextPAttrTokenMap.reset(
+ new SvXMLTokenMap( aTextPAttrTokenMap ));
+ }
+ return *m_pImpl->m_pTextPAttrTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap()
+{
+ if (!m_pImpl->m_pTextFrameAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextFrameAttrTokenMap.reset(
+ new SvXMLTokenMap( aTextFrameAttrTokenMap ));
+ }
+ return *m_pImpl->m_pTextFrameAttrTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap()
+{
+ if (!m_pImpl->m_pTextContourAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextContourAttrTokenMap.reset(
+ new SvXMLTokenMap( aTextContourAttrTokenMap ));
+ }
+ return *m_pImpl->m_pTextContourAttrTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap()
+{
+ if (!m_pImpl->m_pTextHyperlinkAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextHyperlinkAttrTokenMap.reset(
+ new SvXMLTokenMap( aTextHyperlinkAttrTokenMap ));
+ }
+ return *m_pImpl->m_pTextHyperlinkAttrTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap()
+{
+ if (!m_pImpl->m_pTextMasterPageElemTokenMap.get())
+ {
+ m_pImpl->m_pTextMasterPageElemTokenMap.reset(
+ new SvXMLTokenMap( aTextMasterPageElemTokenMap ));
+ }
+ return *m_pImpl->m_pTextMasterPageElemTokenMap;
+}
+
+const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap()
+{
+ if (!m_pImpl->m_pTextFieldAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextFieldAttrTokenMap.reset(
+ new SvXMLTokenMap( aTextFieldAttrTokenMap ));
+ }
+ return *m_pImpl->m_pTextFieldAttrTokenMap;
+}
+
namespace
{
@@ -513,111 +950,48 @@ namespace
}
XMLTextImportHelper::XMLTextImportHelper(
- const Reference < XModel >& rModel,
+ uno::Reference<frame::XModel> const& rModel,
SvXMLImport& rImport,
- sal_Bool bInsertM, sal_Bool bStylesOnlyM,
- sal_Bool bPrg,
- sal_Bool bBlockM,
- sal_Bool bOrganizerM )
-: pTextElemTokenMap( 0 )
-, pTextPElemTokenMap( 0 )
-, pTextPAttrTokenMap( 0 )
-, pTextFieldAttrTokenMap( 0 )
-, pTextNumberedParagraphAttrTokenMap( 0 )
-, pTextListBlockAttrTokenMap( 0 )
-, pTextListBlockElemTokenMap( 0 )
-, pTextFrameAttrTokenMap( 0 )
-, pTextContourAttrTokenMap( 0 )
-, pTextHyperlinkAttrTokenMap( 0 )
-, pTextMasterPageElemTokenMap( 0 )
-, pPrevFrmNames( 0 )
-, pNextFrmNames( 0 )
-
-// --> OD 2008-04-25 #refactorlists#
-, mpTextListsHelper( new XMLTextListsHelper() )
-// <--
-
-, pRenameMap( 0 )
-// --> OD 2006-10-12 #i69629#
-, mpOutlineStylesCandidates( 0 )
-// <--
-
-, pFootnoteBackpatcher( NULL )
-, pSequenceIdBackpatcher( NULL )
-, pSequenceNameBackpatcher( NULL )
-
-, xServiceFactory( rModel, UNO_QUERY )
-
-, rSvXMLImport( rImport )
-
-, bInsertMode( bInsertM )
-, bStylesOnlyMode( bStylesOnlyM )
-, bBlockMode( bBlockM )
-, bProgress( bPrg )
-, bOrganizerMode( bOrganizerM )
-, bBodyContentStarted( sal_True )
-
- // #107848#
- // Initialize inside_deleted_section flag correctly
-, bInsideDeleteContext( sal_False )
-
-, sParaStyleName(RTL_CONSTASCII_USTRINGPARAM("ParaStyleName"))
-, sCharStyleName(RTL_CONSTASCII_USTRINGPARAM("CharStyleName"))
-, sHeadingStyleName(RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName"))
-, sNumberingLevel(RTL_CONSTASCII_USTRINGPARAM("NumberingLevel"))
-, sNumberingStartValue(RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue"))
-, sNumberingRules(RTL_CONSTASCII_USTRINGPARAM("NumberingRules"))
-, sParaIsNumberingRestart(RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart"))
-, sNumberingIsNumber(RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber"))
-, sCurrentPresentation(RTL_CONSTASCII_USTRINGPARAM("CurrentPresentation"))
-, sSequenceNumber(RTL_CONSTASCII_USTRINGPARAM("SequenceNumber"))
-, sSourceName(RTL_CONSTASCII_USTRINGPARAM("SourceName"))
-, sChainNextName(RTL_CONSTASCII_USTRINGPARAM("ChainNextName"))
-, sChainPrevName(RTL_CONSTASCII_USTRINGPARAM("ChainPrevName"))
-, sHyperLinkURL(RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL"))
-, sHyperLinkName(RTL_CONSTASCII_USTRINGPARAM("HyperLinkName"))
-, sHyperLinkTarget(RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget"))
-, sUnvisitedCharStyleName(RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName"))
-, sVisitedCharStyleName(RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName"))
-, sTextFrame(RTL_CONSTASCII_USTRINGPARAM("TextFrame"))
-, sPageDescName(RTL_CONSTASCII_USTRINGPARAM("PageDescName"))
-, sServerMap(RTL_CONSTASCII_USTRINGPARAM("ServerMap"))
-, sHyperLinkEvents(RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents"))
-, sContent(RTL_CONSTASCII_USTRINGPARAM("Content"))
-, sServiceCombinedCharacters(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextField.CombinedCharacters"))
-, sNumberingStyleName(RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName"))
-// --> OD 2008-04-23 #refactorlists#
-, sPropNameDefaultListId(RTL_CONSTASCII_USTRINGPARAM("DefaultListId"))
-, sPropNameListId(RTL_CONSTASCII_USTRINGPARAM("ListId"))
-, sOutlineLevel( RTL_CONSTASCII_USTRINGPARAM("OutlineLevel")) //#outline level,add by zhaojianwei
-// <--
+ bool const bInsertMode, bool const bStylesOnlyMode,
+ bool const bProgress, bool const bBlockMode,
+ bool const bOrganizerMode)
+ : m_pImpl( new Impl(rModel, rImport, bInsertMode, bStylesOnlyMode,
+ bProgress, bBlockMode, bOrganizerMode) )
+ , m_pBackpatcherImpl( MakeBackpatcherImpl() )
{
+ static ::rtl::OUString s_PropNameDefaultListId(
+ RTL_CONSTASCII_USTRINGPARAM("DefaultListId"));
+
Reference< XChapterNumberingSupplier > xCNSupplier( rModel, UNO_QUERY );
if( xCNSupplier.is() )
{
- xChapterNumbering = xCNSupplier->getChapterNumberingRules();
+ m_pImpl->m_xChapterNumbering = xCNSupplier->getChapterNumberingRules();
// --> OD 2008-05-15 #refactorlists#
- if ( xChapterNumbering.is() )
+ if (m_pImpl->m_xChapterNumbering.is())
{
- Reference< XPropertySet > xNumRuleProps( xChapterNumbering, UNO_QUERY );
+ Reference< XPropertySet > const xNumRuleProps(
+ m_pImpl->m_xChapterNumbering, UNO_QUERY);
if ( xNumRuleProps.is() )
{
Reference< XPropertySetInfo > xNumRulePropSetInfo(
xNumRuleProps->getPropertySetInfo());
- if ( xNumRulePropSetInfo.is() &&
- xNumRulePropSetInfo->hasPropertyByName( sPropNameDefaultListId) )
+ if (xNumRulePropSetInfo.is() &&
+ xNumRulePropSetInfo->hasPropertyByName(
+ s_PropNameDefaultListId))
{
::rtl::OUString sListId;
- xNumRuleProps->getPropertyValue( sPropNameDefaultListId ) >>= sListId;
+ xNumRuleProps->getPropertyValue(s_PropNameDefaultListId)
+ >>= sListId;
DBG_ASSERT( sListId.getLength() != 0,
"no default list id found at chapter numbering rules instance. Serious defect -> please inform OD." );
if ( sListId.getLength() )
{
- Reference< XNamed > xChapterNumNamed( xChapterNumbering, UNO_QUERY );
+ Reference< XNamed > const xChapterNumNamed(
+ m_pImpl->m_xChapterNumbering, UNO_QUERY);
if ( xChapterNumNamed.is() )
{
- mpTextListsHelper->KeepListAsProcessed(
+ m_pImpl->m_pTextListsHelper->KeepListAsProcessed(
sListId,
xChapterNumNamed->getName(),
::rtl::OUString() );
@@ -639,72 +1013,81 @@ XMLTextImportHelper::XMLTextImportHelper(
const OUString aParaStyles(RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles"));
if( xFamilies->hasByName( aParaStyles ) )
{
- xParaStyles.set(xFamilies->getByName( aParaStyles ), UNO_QUERY);
+ m_pImpl->m_xParaStyles.set(xFamilies->getByName(aParaStyles),
+ UNO_QUERY);
}
const OUString aCharStyles(RTL_CONSTASCII_USTRINGPARAM("CharacterStyles"));
if( xFamilies->hasByName( aCharStyles ) )
{
- xTextStyles.set(xFamilies->getByName( aCharStyles ), UNO_QUERY);
+ m_pImpl->m_xTextStyles.set(xFamilies->getByName(aCharStyles),
+ UNO_QUERY);
}
const OUString aNumStyles(RTL_CONSTASCII_USTRINGPARAM("NumberingStyles"));
if( xFamilies->hasByName( aNumStyles ) )
{
- xNumStyles.set(xFamilies->getByName( aNumStyles ), UNO_QUERY);
+ m_pImpl->m_xNumStyles.set(xFamilies->getByName(aNumStyles),
+ UNO_QUERY);
}
const OUString aFrameStyles(RTL_CONSTASCII_USTRINGPARAM("FrameStyles"));
if( xFamilies->hasByName( aFrameStyles ) )
{
- xFrameStyles.set(xFamilies->getByName( aFrameStyles ), UNO_QUERY);
+ m_pImpl->m_xFrameStyles.set(xFamilies->getByName(aFrameStyles),
+ UNO_QUERY);
}
const OUString aPageStyles(RTL_CONSTASCII_USTRINGPARAM("PageStyles"));
if( xFamilies->hasByName( aPageStyles ) )
{
- xPageStyles.set(xFamilies->getByName( aPageStyles ), UNO_QUERY);
+ m_pImpl->m_xPageStyles.set(xFamilies->getByName(aPageStyles),
+ UNO_QUERY);
}
}
Reference < XTextFramesSupplier > xTFS( rModel, UNO_QUERY );
if( xTFS.is() )
- xTextFrames.set(xTFS->getTextFrames());
+ {
+ m_pImpl->m_xTextFrames.set(xTFS->getTextFrames());
+ }
Reference < XTextGraphicObjectsSupplier > xTGOS( rModel, UNO_QUERY );
if( xTGOS.is() )
- xGraphics.set(xTGOS->getGraphicObjects());
+ {
+ m_pImpl->m_xGraphics.set(xTGOS->getGraphicObjects());
+ }
Reference < XTextEmbeddedObjectsSupplier > xTEOS( rModel, UNO_QUERY );
if( xTEOS.is() )
- xObjects.set(xTEOS->getEmbeddedObjects());
+ {
+ m_pImpl->m_xObjects.set(xTEOS->getEmbeddedObjects());
+ }
XMLPropertySetMapper *pPropMapper =
new XMLTextPropertySetMapper( TEXT_PROP_MAP_PARA );
- xParaImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport );
+ m_pImpl->m_xParaImpPrMap =
+ new XMLTextImportPropertyMapper( pPropMapper, rImport );
pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT );
- xTextImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport );
+ m_pImpl->m_xTextImpPrMap =
+ new XMLTextImportPropertyMapper( pPropMapper, rImport );
pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME );
- xFrameImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport );
+ m_pImpl->m_xFrameImpPrMap =
+ new XMLTextImportPropertyMapper( pPropMapper, rImport );
pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_SECTION );
- xSectionImpPrMap = new XMLTextImportPropertyMapper( pPropMapper, rImport );
+ m_pImpl->m_xSectionImpPrMap =
+ new XMLTextImportPropertyMapper( pPropMapper, rImport );
pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_RUBY );
- xRubyImpPrMap = new SvXMLImportPropertyMapper( pPropMapper, rImport );
+ m_pImpl->m_xRubyImpPrMap =
+ new SvXMLImportPropertyMapper( pPropMapper, rImport );
}
XMLTextImportHelper::~XMLTextImportHelper()
{
- // --> OD 2006-10-12 #i69629#
- delete [] mpOutlineStylesCandidates;
- // <--
-
- aBookmarkVector.clear();
-
- _FinitBackpatcher();
}
SvXMLImportPropertyMapper *XMLTextImportHelper::CreateShapeExtPropMapper(SvXMLImport& rImport)
@@ -771,75 +1154,46 @@ SvXMLImportPropertyMapper*
void XMLTextImportHelper::SetCursor( const Reference < XTextCursor > & rCursor )
{
- xCursor.set(rCursor);
- xText.set(rCursor->getText());
- xCursorAsRange.set( rCursor, UNO_QUERY );
+ m_pImpl->m_xCursor.set(rCursor);
+ m_pImpl->m_xText.set(rCursor->getText());
+ m_pImpl->m_xCursorAsRange.set( rCursor, UNO_QUERY );
}
void XMLTextImportHelper::ResetCursor()
{
- xCursor.set(0);
- xText.set(0);
- xCursorAsRange.set(0);
-}
-
-SvXMLTokenMap *XMLTextImportHelper::_GetTextElemTokenMap()
-{
- return new SvXMLTokenMap( aTextElemTokenMap );
-}
-
-SvXMLTokenMap *XMLTextImportHelper::_GetTextPElemTokenMap()
-{
- return new SvXMLTokenMap( aTextPElemTokenMap );
-}
-
-SvXMLTokenMap *XMLTextImportHelper::_GetTextPAttrTokenMap()
-{
- return new SvXMLTokenMap( aTextPAttrTokenMap );
-}
-
-SvXMLTokenMap *XMLTextImportHelper::_GetTextFrameAttrTokenMap()
-{
- return new SvXMLTokenMap( aTextFrameAttrTokenMap );
-}
-
-SvXMLTokenMap *XMLTextImportHelper::_GetTextContourAttrTokenMap()
-{
- return new SvXMLTokenMap( aTextContourAttrTokenMap );
-}
-
-
-SvXMLTokenMap *XMLTextImportHelper::_GetTextHyperlinkAttrTokenMap()
-{
- return new SvXMLTokenMap( aTextHyperlinkAttrTokenMap );
+ m_pImpl->m_xCursor.set(0);
+ m_pImpl->m_xText.set(0);
+ m_pImpl->m_xCursorAsRange.set(0);
}
-SvXMLTokenMap *XMLTextImportHelper::_GetTextMasterPageElemTokenMap()
-{
- return new SvXMLTokenMap( aTextMasterPageElemTokenMap );
-}
sal_Bool XMLTextImportHelper::HasFrameByName( const OUString& rName ) const
{
- return ( xTextFrames.is() && xTextFrames->hasByName( rName ) ) ||
- ( xGraphics.is() && xGraphics->hasByName( rName ) ) ||
- ( xObjects.is() && xObjects->hasByName( rName ) );
+ return (m_pImpl->m_xTextFrames.is() &&
+ m_pImpl->m_xTextFrames->hasByName(rName))
+ || (m_pImpl->m_xGraphics.is() &&
+ m_pImpl->m_xGraphics->hasByName(rName))
+ || (m_pImpl->m_xObjects.is() &&
+ m_pImpl->m_xObjects->hasByName(rName));
}
void XMLTextImportHelper::InsertString( const OUString& rChars )
{
- DBG_ASSERT( xText.is(), "no text" );
- DBG_ASSERT( xCursorAsRange.is(), "no range" );
- if( xText.is() )
- xText->insertString( xCursorAsRange, rChars, sal_False );
+ DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
+ DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
+ if (m_pImpl->m_xText.is())
+ {
+ m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
+ rChars, sal_False);
+ }
}
void XMLTextImportHelper::InsertString( const OUString& rChars,
sal_Bool& rIgnoreLeadingSpace )
{
- DBG_ASSERT( xText.is(), "no text" );
- DBG_ASSERT( xCursorAsRange.is(), "no range" );
- if( xText.is() )
+ DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
+ DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
+ if (m_pImpl->m_xText.is())
{
sal_Int32 nLen = rChars.getLength();
OUStringBuffer sChars( nLen );
@@ -863,35 +1217,43 @@ void XMLTextImportHelper::InsertString( const OUString& rChars,
break;
}
}
- xText->insertString( xCursorAsRange, sChars.makeStringAndClear(),
- sal_False );
+ m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
+ sChars.makeStringAndClear(), sal_False);
}
}
+
void XMLTextImportHelper::InsertControlCharacter( sal_Int16 nControl )
{
- DBG_ASSERT( xText.is(), "no text" );
- DBG_ASSERT( xCursorAsRange.is(), "no range" );
- if( xText.is() )
- xText->insertControlCharacter( xCursorAsRange, nControl, sal_False );
+ DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
+ DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
+ if (m_pImpl->m_xText.is())
+ {
+ m_pImpl->m_xText->insertControlCharacter(
+ m_pImpl->m_xCursorAsRange, nControl, sal_False);
+ }
}
void XMLTextImportHelper::InsertTextContent(
Reference < XTextContent > & xContent )
{
- DBG_ASSERT( xText.is(), "no text" );
- DBG_ASSERT( xCursorAsRange.is(), "no range" );
- if( xText.is() )
- xText->insertTextContent( xCursorAsRange, xContent, sal_False );
+ DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
+ DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
+ if (m_pImpl->m_xText.is())
+ {
+ m_pImpl->m_xText->insertTextContent(
+ m_pImpl->m_xCursorAsRange, xContent, sal_False);
+ }
}
void XMLTextImportHelper::DeleteParagraph()
{
- DBG_ASSERT( xText.is(), "no text" );
- DBG_ASSERT( xCursor.is(), "no cursor" );
- DBG_ASSERT( xCursorAsRange.is(), "no range" );
+ DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
+ DBG_ASSERT(m_pImpl->m_xCursor.is(), "no cursor");
+ DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
sal_Bool bDelete = sal_True;
- Reference < XEnumerationAccess > xEnumAccess( xCursor, UNO_QUERY );
+ Reference < XEnumerationAccess > const xEnumAccess(
+ m_pImpl->m_xCursor, UNO_QUERY);
if( xEnumAccess.is() )
{
Reference < XEnumeration > xEnum(xEnumAccess->createEnumeration());
@@ -909,10 +1271,11 @@ void XMLTextImportHelper::DeleteParagraph()
}
if( bDelete )
{
- if( xCursor->goLeft( 1, sal_True ) )
+ if (m_pImpl->m_xCursor->goLeft( 1, sal_True ))
{
OUString sEmpty;
- xText->insertString( xCursorAsRange, sEmpty, sal_True );
+ m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
+ sEmpty, sal_True);
}
}
}
@@ -935,9 +1298,10 @@ OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars,
XMLTextStyleContext *pStyle = 0;
sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH
: XML_STYLE_FAMILY_TEXT_TEXT;
- if( rStyleName.getLength() && xAutoStyles.Is() )
+ if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext( nFamily, rStyleName,
sal_True );
pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle);
@@ -949,7 +1313,8 @@ OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars,
if( nCount )
{
UniReference < SvXMLImportPropertyMapper > xImpPrMap =
- ((SvXMLStylesContext *)&xAutoStyles)->GetImportPropertyMapper(nFamily);
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)
+ ->GetImportPropertyMapper(nFamily);
if( xImpPrMap.is() )
{
UniReference<XMLPropertySetMapper> rPropMapper =
@@ -1135,13 +1500,41 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
sal_Bool bSetListAttrs )
// <--
{
+ static ::rtl::OUString s_ParaStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("ParaStyleName"));
+ static ::rtl::OUString s_CharStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("CharStyleName"));
+ static ::rtl::OUString s_NumberingRules(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingRules"));
+ static ::rtl::OUString s_NumberingIsNumber(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber"));
+ static ::rtl::OUString s_NumberingLevel(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingLevel"));
+ static ::rtl::OUString s_ParaIsNumberingRestart(
+ RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart"));
+ static ::rtl::OUString s_NumberingStartValue(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue"));
+ static ::rtl::OUString s_PropNameListId(
+ RTL_CONSTASCII_USTRINGPARAM("ListId"));
+ static ::rtl::OUString s_PageDescName(
+ RTL_CONSTASCII_USTRINGPARAM("PageDescName"));
+ static ::rtl::OUString s_ServiceCombinedCharacters(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.text.TextField.CombinedCharacters"));
+ static ::rtl::OUString s_Content(RTL_CONSTASCII_USTRINGPARAM("Content"));
+ static ::rtl::OUString s_OutlineLevel(
+ RTL_CONSTASCII_USTRINGPARAM("OutlineLevel"));
+ static ::rtl::OUString s_NumberingStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName"));
+
const sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH
: XML_STYLE_FAMILY_TEXT_TEXT;
XMLTextStyleContext *pStyle = 0;
OUString sStyleName( rStyleName );
- if( sStyleName.getLength() && xAutoStyles.Is() )
+ if (sStyleName.getLength() && m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext( nFamily, sStyleName, sal_True );
pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle);
}
@@ -1156,9 +1549,10 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
if( sStyleName.getLength() )
{
sStyleName = rImport.GetStyleDisplayName( nFamily, sStyleName );
- const String& rPropName = bPara ? sParaStyleName : sCharStyleName;
- const Reference < XNameContainer > & rStyles = bPara ? xParaStyles
- : xTextStyles;
+ const String& rPropName = (bPara) ? s_ParaStyleName : s_CharStyleName;
+ const Reference < XNameContainer > & rStyles = (bPara)
+ ? m_pImpl->m_xParaStyles
+ : m_pImpl->m_xTextStyles;
if( rStyles.is() &&
xPropSetInfo->hasPropertyByName( rPropName ) &&
rStyles->hasByName( sStyleName ) )
@@ -1174,11 +1568,13 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
// is not inside a list and if it by default applies the outline style.
bool bApplyOutlineLevelAsListLevel( false );
// --> OD 2007-08-17 #i80724#
- if ( bSetListAttrs && bPara && xPropSetInfo->hasPropertyByName( sNumberingRules ) )
+ if (bSetListAttrs && bPara
+ && xPropSetInfo->hasPropertyByName( s_NumberingRules))
// <--
{
// Set numbering rules
- Reference < XIndexReplace > xNumRules(xPropSet->getPropertyValue( sNumberingRules ), UNO_QUERY);
+ Reference< XIndexReplace > const xNumRules(
+ xPropSet->getPropertyValue(s_NumberingRules), UNO_QUERY);
XMLTextListBlockContext * pListBlock(0);
XMLTextListItemContext * pListItem(0);
@@ -1214,7 +1610,8 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
}
// --> OD 2008-08-15 #i92811#
- sListId = mpTextListsHelper->GetListIdForListBlock( *pListBlock );
+ sListId = m_pImpl->m_pTextListsHelper->GetListIdForListBlock(
+ *pListBlock);
// <--
}
else if (pNumberedParagraph)
@@ -1268,7 +1665,8 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
// gracefully.
try
{
- xPropSet->setPropertyValue( sNumberingRules, makeAny(xNewNumRules) );
+ xPropSet->setPropertyValue(
+ s_NumberingRules, makeAny(xNewNumRules) );
}
catch( Exception e )
{
@@ -1279,37 +1677,37 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
}
if (!bNumberingIsNumber &&
- xPropSetInfo->hasPropertyByName( sNumberingIsNumber ) )
+ xPropSetInfo->hasPropertyByName(s_NumberingIsNumber))
{
- xPropSet->setPropertyValue( sNumberingIsNumber, Any(sal_False) );
+ xPropSet->setPropertyValue(s_NumberingIsNumber, Any(sal_False));
}
- xPropSet->setPropertyValue( sNumberingLevel, Any(nLevel) );
+ xPropSet->setPropertyValue( s_NumberingLevel, Any(nLevel) );
if( pListBlock && pListBlock->IsRestartNumbering() )
{
// TODO: property missing
- if( xPropSetInfo->hasPropertyByName( sParaIsNumberingRestart ) )
+ if (xPropSetInfo->hasPropertyByName(s_ParaIsNumberingRestart))
{
sal_Bool bTmp = sal_True;
- xPropSet->setPropertyValue(sParaIsNumberingRestart,
+ xPropSet->setPropertyValue(s_ParaIsNumberingRestart,
makeAny(bTmp) );
}
pListBlock->ResetRestartNumbering();
}
if ( 0 <= nStartValue &&
- xPropSetInfo->hasPropertyByName( sNumberingStartValue ) )
+ xPropSetInfo->hasPropertyByName(s_NumberingStartValue))
{
- xPropSet->setPropertyValue(sNumberingStartValue,
+ xPropSet->setPropertyValue(s_NumberingStartValue,
makeAny(nStartValue));
}
// --> OD 2008-04-23 #refactorlists#
- if ( xPropSetInfo->hasPropertyByName( sPropNameListId ) )
+ if (xPropSetInfo->hasPropertyByName(s_PropNameListId))
{
if (sListId.getLength()) {
- xPropSet->setPropertyValue( sPropNameListId,
+ xPropSet->setPropertyValue(s_PropNameListId,
makeAny(sListId) );
}
}
@@ -1338,10 +1736,11 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
if ( ( bBuildIdFound && nUPD == 680 ) ||
!pStyle || !pStyle->IsListStyleSet() )
{
- if ( xChapterNumbering.is() )
+ if (m_pImpl->m_xChapterNumbering.is())
{
Reference< XNamed > xNumNamed( xNumRules, UNO_QUERY );
- Reference< XNamed > xChapterNumNamed( xChapterNumbering, UNO_QUERY );
+ Reference< XNamed > const xChapterNumNamed (
+ m_pImpl->m_xChapterNumbering, UNO_QUERY);
if ( xNumNamed.is() && xChapterNumNamed.is() &&
xNumNamed->getName() == xChapterNumNamed->getName() )
{
@@ -1355,7 +1754,7 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
// <--
if ( bRemove )
{
- xPropSet->setPropertyValue( sNumberingRules, Any() );
+ xPropSet->setPropertyValue( s_NumberingRules, Any() );
}
}
// <--
@@ -1367,27 +1766,28 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
{
pStyle->FillPropertySet( xPropSet );
if( bPara && pStyle->HasMasterPageName() &&
- xPropSetInfo->hasPropertyByName( sPageDescName ) )
+ xPropSetInfo->hasPropertyByName(s_PageDescName))
{
OUString sDisplayName(
rImport.GetStyleDisplayName(
XML_STYLE_FAMILY_MASTER_PAGE,
pStyle->GetMasterPageName()) );
if( !sDisplayName.getLength() ||
- (xPageStyles.is() &&
- xPageStyles->hasByName( sDisplayName )) )
+ (m_pImpl->m_xPageStyles.is() &&
+ m_pImpl->m_xPageStyles->hasByName( sDisplayName)))
{
- xPropSet->setPropertyValue( sPageDescName, makeAny(sDisplayName) );
+ xPropSet->setPropertyValue(s_PageDescName,
+ makeAny(sDisplayName));
}
}
if( bPara && pStyle->GetDropCapStyleName().getLength() &&
- xTextStyles.is() )
+ m_pImpl->m_xTextStyles.is())
{
OUString sDisplayName(
rImport.GetStyleDisplayName(
XML_STYLE_FAMILY_TEXT_TEXT,
pStyle->GetDropCapStyleName()) );
- if( xTextStyles->hasByName( sDisplayName ) &&
+ if (m_pImpl->m_xTextStyles->hasByName(sDisplayName) &&
xPropSetInfo->hasPropertyByName( sDisplayName ) )
{
xPropSet->setPropertyValue( pStyle->sDropCapCharStyleName, makeAny(sDisplayName) );
@@ -1398,9 +1798,11 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
if (!bPara && pStyle->HasCombinedCharactersLetter())
{
// insert combined characters text field
- if( xServiceFactory.is() )
+ if (m_pImpl->m_xServiceFactory.is())
{
- Reference<XPropertySet> xTmp( xServiceFactory->createInstance(sServiceCombinedCharacters), UNO_QUERY );
+ uno::Reference<beans::XPropertySet> const xTmp(
+ m_pImpl->m_xServiceFactory->createInstance(
+ s_ServiceCombinedCharacters), UNO_QUERY);
if( xTmp.is() )
{
// fix cursor if larger than possible for
@@ -1413,15 +1815,16 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
}
// set field value (the combined character string)
- xTmp->setPropertyValue(sContent, makeAny(rCursor->getString()));
+ xTmp->setPropertyValue(s_Content,
+ makeAny(rCursor->getString()));
// insert the field over it's original text
Reference<XTextRange> xRange(rCursor, UNO_QUERY);
Reference<XTextContent> xTextContent(xTmp, UNO_QUERY);
- if (xText.is() && xRange.is())
+ if (m_pImpl->m_xText.is() && xRange.is())
{
- xText->insertTextContent( xRange, xTextContent,
- sal_True );
+ m_pImpl->m_xText->insertTextContent(
+ xRange, xTextContent, sal_True);
}
}
}
@@ -1444,10 +1847,12 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
{
// --> OD 2009-08-18 #i103817#
sal_Int16 nCurrentOutlineLevelInheritedFromParagraphStyle = 0;
- const bool bHasOutlineLevelProp( xPropSetInfo->hasPropertyByName( sOutlineLevel ) );
+ const bool bHasOutlineLevelProp(
+ xPropSetInfo->hasPropertyByName(s_OutlineLevel));
if ( bHasOutlineLevelProp )
{
- xPropSet->getPropertyValue( sOutlineLevel ) >>= nCurrentOutlineLevelInheritedFromParagraphStyle;
+ xPropSet->getPropertyValue(s_OutlineLevel)
+ >>= nCurrentOutlineLevelInheritedFromParagraphStyle;
}
// <--
//if ( bPara && nOutlineLevel != -1 ) //#outline level,removed by zhaojianwei
@@ -1460,7 +1865,7 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
// attribute outline level, the paragraph attribute value is left unset
if ( nCurrentOutlineLevelInheritedFromParagraphStyle != nOutlineLevel )
{
- xPropSet->setPropertyValue( sOutlineLevel,
+ xPropSet->setPropertyValue( s_OutlineLevel,
makeAny( static_cast<sal_Int16>(nOutlineLevel) ) );
}
}//<-end,zhaojianwei
@@ -1469,11 +1874,11 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
if ( bApplyOutlineLevelAsListLevel )
{
sal_Int16 nNumLevel = -1;
- xPropSet->getPropertyValue( sNumberingLevel ) >>= nNumLevel;
+ xPropSet->getPropertyValue( s_NumberingLevel ) >>= nNumLevel;
if ( nNumLevel == -1 ||
nNumLevel != (nOutlineLevel - 1) )
{
- xPropSet->setPropertyValue( sNumberingLevel,
+ xPropSet->setPropertyValue( s_NumberingLevel,
makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) );
}
}
@@ -1486,7 +1891,7 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
// a candidate for an assignment to the list level of the outline
// style, if it has no direct list style property and (if exists) the
// automatic paragraph style has also no direct list style set.
- if( xParaStyles->hasByName( sStyleName ) )
+ if (m_pImpl->m_xParaStyles->hasByName(sStyleName))
{
bool bOutlineStyleCandidate( false );
@@ -1538,19 +1943,19 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
// Assure that heading applies the outline style
if ( ( !pStyle || !pStyle->IsListStyleSet() ) &&
!bOutlineStyleCandidate &&
- xChapterNumbering.is() )
+ m_pImpl->m_xChapterNumbering.is())
{
OUString sEmptyStr;
if ( !lcl_HasListStyle( sStyleName,
- xParaStyles, GetXMLImport(),
- sNumberingStyleName,
+ m_pImpl->m_xParaStyles, GetXMLImport(),
+ s_NumberingStyleName,
sEmptyStr ) )
{
// heading not in a list --> apply outline style
- xPropSet->setPropertyValue( sNumberingRules,
- makeAny(xChapterNumbering) );
- xPropSet->setPropertyValue( sNumberingLevel,
- makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) );
+ xPropSet->setPropertyValue( s_NumberingRules,
+ makeAny(m_pImpl->m_xChapterNumbering) );
+ xPropSet->setPropertyValue( s_NumberingLevel,
+ makeAny(static_cast<sal_Int8>(nOutlineLevel - 1)));
}
}
// <--
@@ -1564,7 +1969,8 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
if ( nCurrentOutlineLevelInheritedFromParagraphStyle != 0 )
{
sal_Int16 nZero = 0;
- xPropSet->setPropertyValue( sOutlineLevel, makeAny( static_cast<sal_Int16>(nZero) ) );
+ xPropSet->setPropertyValue(s_OutlineLevel,
+ makeAny( static_cast<sal_Int16>(nZero) ));
}
}//<-end,zhaojianwei
}
@@ -1576,38 +1982,39 @@ OUString XMLTextImportHelper::SetStyleAndAttrs(
void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName,
sal_Int8 nOutlineLevel )
{
+ static ::rtl::OUString s_HeadingStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName"));
+
// style name empty?
if( rStyleName.getLength() == 0 )
{
// Empty? Then we need o do stuff. Let's do error checking first.
- if( xChapterNumbering.is() &&
+ if (m_pImpl->m_xChapterNumbering.is() &&
( nOutlineLevel > 0 ) &&
- ( nOutlineLevel <= xChapterNumbering->getCount() ) )
+ (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount()))
{
nOutlineLevel--; // for the remainder, the level's are 0-based
// empty style name: look-up previously used name
// if we don't have a previously used name, we'll use the default
- if ( mpOutlineStylesCandidates == NULL )
- {
- mpOutlineStylesCandidates = new ::std::vector<OUString>[xChapterNumbering->getCount()];
- }
-
- if ( mpOutlineStylesCandidates[nOutlineLevel].empty() )
+ m_pImpl->InitOutlineStylesCandidates();
+ if (m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].empty())
{
// no other name used previously? Then use default
// iterate over property value sequence to find the style name
Sequence<PropertyValue> aProperties;
- xChapterNumbering->getByIndex( nOutlineLevel ) >>= aProperties;
+ m_pImpl->m_xChapterNumbering->getByIndex( nOutlineLevel )
+ >>= aProperties;
for( sal_Int32 i = 0; i < aProperties.getLength(); i++ )
{
- if( aProperties[i].Name == sHeadingStyleName )
+ if (aProperties[i].Name == s_HeadingStyleName)
{
rtl::OUString aOutlineStyle;
aProperties[i].Value >>= aOutlineStyle;
- mpOutlineStylesCandidates[nOutlineLevel].push_back( aOutlineStyle );
+ m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel]
+ .push_back( aOutlineStyle );
break; // early out, if we found it!.
}
}
@@ -1616,7 +2023,8 @@ void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName,
// finally, we'll use the previously used style name for this
// format (or the default we've just put into that style)
// --> OD 2006-11-06 #i71249# - take last added one
- rStyleName = mpOutlineStylesCandidates[nOutlineLevel].back();
+ rStyleName =
+ m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].back();
// <--
}
// else: nothing we can do, so we'll leave it empty
@@ -1627,23 +2035,27 @@ void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName,
void XMLTextImportHelper::AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel,
const OUString& rStyleName )
{
- if ( rStyleName.getLength() &&
- xChapterNumbering.is() &&
- nOutlineLevel > 0 && nOutlineLevel <= xChapterNumbering->getCount() )
+ if (rStyleName.getLength()
+ && m_pImpl->m_xChapterNumbering.is()
+ && (nOutlineLevel > 0)
+ && (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount()))
{
- if( !mpOutlineStylesCandidates )
- {
- mpOutlineStylesCandidates = new ::std::vector<OUString>[xChapterNumbering->getCount()];
- }
- mpOutlineStylesCandidates[nOutlineLevel-1].push_back( rStyleName );
+ m_pImpl->InitOutlineStylesCandidates();
+ m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel-1].push_back(
+ rStyleName);
}
}
void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
{
- if ( ( mpOutlineStylesCandidates != NULL || bSetEmptyLevels ) &&
- xChapterNumbering.is() &&
- !IsInsertMode() )
+ static ::rtl::OUString s_NumberingStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName"));
+ static ::rtl::OUString s_HeadingStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName"));
+
+ if ((m_pImpl->m_pOutlineStylesCandidates != NULL || bSetEmptyLevels) &&
+ m_pImpl->m_xChapterNumbering.is() &&
+ !IsInsertMode())
{
bool bChooseLastOne( false );
{
@@ -1666,12 +2078,13 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
OUString sOutlineStyleName;
{
- Reference<XPropertySet> xChapterNumRule( xChapterNumbering, UNO_QUERY );
+ Reference<XPropertySet> xChapterNumRule(
+ m_pImpl->m_xChapterNumbering, UNO_QUERY);
const OUString sName(RTL_CONSTASCII_USTRINGPARAM("Name"));
xChapterNumRule->getPropertyValue(sName) >>= sOutlineStyleName;
}
- const sal_Int32 nCount = xChapterNumbering->getCount();
+ const sal_Int32 nCount = m_pImpl->m_xChapterNumbering->getCount();
// --> OD 2009-11-13 #i106218#
// First collect all paragraph styles choosen for assignment to each
// list level of the outline style, then perform the intrinsic assignment.
@@ -1683,28 +2096,33 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
for( sal_Int32 i=0; i < nCount; ++i )
{
if ( bSetEmptyLevels ||
- ( mpOutlineStylesCandidates &&
- !mpOutlineStylesCandidates[i].empty() ) )
+ (m_pImpl->m_pOutlineStylesCandidates &&
+ !m_pImpl->m_pOutlineStylesCandidates[i].empty()))
{
// determine, which candidate is one to be assigned to the list
// level of the outline style
- if ( mpOutlineStylesCandidates &&
- !mpOutlineStylesCandidates[i].empty() )
+ if (m_pImpl->m_pOutlineStylesCandidates &&
+ !m_pImpl->m_pOutlineStylesCandidates[i].empty())
{
if ( bChooseLastOne )
{
- sChosenStyles[i] = mpOutlineStylesCandidates[i].back();
+ sChosenStyles[i] =
+ m_pImpl->m_pOutlineStylesCandidates[i].back();
}
else
{
- for ( sal_uInt32 j = 0; j < mpOutlineStylesCandidates[i].size(); ++j )
+ for (sal_uInt32 j = 0;
+ j < m_pImpl->m_pOutlineStylesCandidates[i].size();
+ ++j)
{
- if ( !lcl_HasListStyle( mpOutlineStylesCandidates[i][j],
- xParaStyles, GetXMLImport(),
- sNumberingStyleName,
- sOutlineStyleName ) )
+ if (!lcl_HasListStyle(
+ m_pImpl->m_pOutlineStylesCandidates[i][j],
+ m_pImpl->m_xParaStyles, GetXMLImport(),
+ s_NumberingStyleName,
+ sOutlineStyleName))
{
- sChosenStyles[i] = mpOutlineStylesCandidates[i][j];
+ sChosenStyles[i] =
+ m_pImpl->m_pOutlineStylesCandidates[i][j];
break;
}
}
@@ -1715,7 +2133,7 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
// --> OD 2009-11-13 #i106218#
Sequence < PropertyValue > aProps( 1 );
PropertyValue *pProps = aProps.getArray();
- pProps->Name = sHeadingStyleName;
+ pProps->Name = s_HeadingStyleName;
for ( sal_Int32 i = 0; i < nCount; ++i )
{
// --> OD 2009-12-11 #i107610#
@@ -1724,7 +2142,8 @@ void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
// <--
{
pProps->Value <<= sChosenStyles[i];
- xChapterNumbering->replaceByIndex( i, makeAny( aProps ) );
+ m_pImpl->m_xChapterNumbering->replaceByIndex(i,
+ makeAny( aProps ));
}
}
// <--
@@ -1741,62 +2160,79 @@ void XMLTextImportHelper::SetHyperlink(
const OUString& rVisitedStyleName,
XMLEventsImportContext* pEvents)
{
+ static ::rtl::OUString s_HyperLinkURL(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL"));
+ static ::rtl::OUString s_HyperLinkName(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkName"));
+ static ::rtl::OUString s_HyperLinkTarget(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget"));
+ static ::rtl::OUString s_UnvisitedCharStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName"));
+ static ::rtl::OUString s_VisitedCharStyleName(
+ RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName"));
+ static ::rtl::OUString s_HyperLinkEvents(
+ RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents"));
+
Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY );
Reference < XPropertySetInfo > xPropSetInfo(
xPropSet->getPropertySetInfo());
- if( !xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(sHyperLinkURL) )
+ if (!xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(s_HyperLinkURL))
return;
- xPropSet->setPropertyValue( sHyperLinkURL, makeAny(rHRef) );
+ xPropSet->setPropertyValue(s_HyperLinkURL, makeAny(rHRef));
- if( xPropSetInfo->hasPropertyByName( sHyperLinkName ) )
+ if (xPropSetInfo->hasPropertyByName(s_HyperLinkName))
{
- xPropSet->setPropertyValue( sHyperLinkName, makeAny(rName) );
+ xPropSet->setPropertyValue(s_HyperLinkName, makeAny(rName));
}
- if( xPropSetInfo->hasPropertyByName( sHyperLinkTarget ) )
+ if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget))
{
- xPropSet->setPropertyValue( sHyperLinkTarget, makeAny(rTargetFrameName) );
+ xPropSet->setPropertyValue(s_HyperLinkTarget,
+ makeAny(rTargetFrameName));
}
if ( (pEvents != NULL) &&
- xPropSetInfo->hasPropertyByName( sHyperLinkEvents ))
+ xPropSetInfo->hasPropertyByName(s_HyperLinkEvents))
{
// The API treats events at hyperlinks differently from most
// other properties: You have to set a name replace with the
// events in it. The easiest way to to this is to 1) get
// events, 2) set new ones, and 3) then put events back.
- Reference<XNameReplace> xReplace(xPropSet->getPropertyValue( sHyperLinkEvents ), UNO_QUERY);
+ uno::Reference<XNameReplace> const xReplace(
+ xPropSet->getPropertyValue(s_HyperLinkEvents), UNO_QUERY);
if (xReplace.is())
{
// set events
pEvents->SetEvents(xReplace);
// put events
- xPropSet->setPropertyValue( sHyperLinkEvents, makeAny(xReplace) );
+ xPropSet->setPropertyValue(s_HyperLinkEvents, makeAny(xReplace));
}
}
- if( xTextStyles.is() )
+ if (m_pImpl->m_xTextStyles.is())
{
OUString sDisplayName(
rImport.GetStyleDisplayName(
XML_STYLE_FAMILY_TEXT_TEXT, rStyleName ) );
if( sDisplayName.getLength() &&
- xPropSetInfo->hasPropertyByName( sUnvisitedCharStyleName ) &&
- xTextStyles->hasByName( sDisplayName ) )
+ xPropSetInfo->hasPropertyByName(s_UnvisitedCharStyleName) &&
+ m_pImpl->m_xTextStyles->hasByName(sDisplayName))
{
- xPropSet->setPropertyValue( sUnvisitedCharStyleName, makeAny(sDisplayName) );
+ xPropSet->setPropertyValue(s_UnvisitedCharStyleName,
+ makeAny(sDisplayName));
}
sDisplayName =
rImport.GetStyleDisplayName(
XML_STYLE_FAMILY_TEXT_TEXT, rVisitedStyleName );
if( sDisplayName.getLength() &&
- xPropSetInfo->hasPropertyByName( sVisitedCharStyleName ) &&
- xTextStyles->hasByName( sDisplayName ) )
+ xPropSetInfo->hasPropertyByName(s_VisitedCharStyleName) &&
+ m_pImpl->m_xTextStyles->hasByName(sDisplayName))
{
- xPropSet->setPropertyValue( sVisitedCharStyleName, makeAny(sDisplayName) );
+ xPropSet->setPropertyValue(s_VisitedCharStyleName,
+ makeAny(sDisplayName));
}
}
}
@@ -1822,9 +2258,10 @@ void XMLTextImportHelper::SetRuby(
// the ruby style (ruby-adjust)
XMLPropStyleContext *pStyle = 0;
- if( rStyleName.getLength() && xAutoStyles.Is() )
+ if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext( XML_STYLE_FAMILY_TEXT_RUBY,
rStyleName, sal_True );
pStyle = PTR_CAST(XMLPropStyleContext,pTempStyle);
@@ -1834,14 +2271,14 @@ void XMLTextImportHelper::SetRuby(
}
// the ruby text character style
- if( xTextStyles.is() )
+ if (m_pImpl->m_xTextStyles.is())
{
OUString sDisplayName(
rImport.GetStyleDisplayName(
XML_STYLE_FAMILY_TEXT_TEXT, rTextStyleName ) );
if( (sDisplayName.getLength() > 0) &&
// xPropSetInfo->hasPropertyByName( sRubyCharStyleName ) &&
- xTextStyles->hasByName( sDisplayName ) )
+ m_pImpl->m_xTextStyles->hasByName( sDisplayName ))
{
xPropSet->setPropertyValue(sRubyCharStyleName, makeAny(sDisplayName));
}
@@ -1851,21 +2288,21 @@ void XMLTextImportHelper::SetRuby(
void XMLTextImportHelper::SetAutoStyles( SvXMLStylesContext *pStyles )
{
- xAutoStyles = pStyles;
+ m_pImpl->m_xAutoStyles = pStyles;
}
void XMLTextImportHelper::SetFontDecls( XMLFontStylesContext *pFontDecls )
{
- xFontDecls = pFontDecls;
- ((XMLTextImportPropertyMapper *)xParaImpPrMap.get())
+ m_pImpl->m_xFontDecls = pFontDecls;
+ ((XMLTextImportPropertyMapper *)m_pImpl->m_xParaImpPrMap.get())
->SetFontDecls( pFontDecls );
- ((XMLTextImportPropertyMapper *)xTextImpPrMap.get())
+ ((XMLTextImportPropertyMapper *)m_pImpl->m_xTextImpPrMap.get())
->SetFontDecls( pFontDecls );
}
const XMLFontStylesContext *XMLTextImportHelper::GetFontDecls() const
{
- return (XMLFontStylesContext *)&xFontDecls;
+ return (XMLFontStylesContext *)&m_pImpl->m_xFontDecls;
}
sal_Bool XMLTextImportHelper::HasDrawNameAttribute(
@@ -1910,7 +2347,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
pContext = new XMLParaContext( rImport,
nPrefix, rLocalName,
xAttrList, bHeading );
- if( bProgress && XML_TEXT_TYPE_SHAPE != eType )
+ if (m_pImpl->m_bProgress && XML_TEXT_TYPE_SHAPE != eType)
{
rImport.GetProgressBarHelper()->Increment();
}
@@ -1935,7 +2372,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
xAttrList );
break;
case XML_TOK_TEXT_SEQUENCE_DECLS:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) ||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
XML_TEXT_TYPE_HEADER_FOOTER == eType )
{
pContext = new XMLVariableDeclsImportContext(
@@ -1945,7 +2382,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
break;
case XML_TOK_TEXT_VARFIELD_DECLS:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) ||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
XML_TEXT_TYPE_HEADER_FOOTER == eType )
{
pContext = new XMLVariableDeclsImportContext(
@@ -1955,7 +2392,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
break;
case XML_TOK_TEXT_USERFIELD_DECLS:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted)||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted)||
XML_TEXT_TYPE_HEADER_FOOTER == eType )
{
pContext = new XMLVariableDeclsImportContext(
@@ -1965,7 +2402,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
break;
case XML_TOK_TEXT_DDE_DECLS:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) ||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
XML_TEXT_TYPE_HEADER_FOOTER == eType )
{
pContext = new XMLDdeFieldDeclsImportContext(
@@ -1975,7 +2412,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
break;
case XML_TOK_TEXT_FRAME_PAGE:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) ||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
XML_TEXT_TYPE_TEXTBOX == eType ||
XML_TEXT_TYPE_CHANGED_REGION == eType )
{
@@ -1990,7 +2427,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
break;
case XML_TOK_DRAW_A_PAGE:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) ||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
XML_TEXT_TYPE_TEXTBOX == eType ||
XML_TEXT_TYPE_CHANGED_REGION == eType)
{
@@ -2080,7 +2517,7 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
break;
default:
- if( (XML_TEXT_TYPE_BODY == eType && bBodyContentStarted) ||
+ if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
XML_TEXT_TYPE_TEXTBOX == eType ||
XML_TEXT_TYPE_CHANGED_REGION == eType )
{
@@ -2103,7 +2540,9 @@ SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
}
if( XML_TEXT_TYPE_BODY == eType && bContent )
- bBodyContentStarted = sal_False;
+ {
+ m_pImpl->m_bBodyContentStarted = sal_False;
+ }
return pContext;
}
@@ -2120,7 +2559,8 @@ SvXMLImportContext *XMLTextImportHelper::CreateTableChildContext(
sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName,
sal_Bool* pIsSystemLanguage )
{
- const SvXMLStyleContext* pStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE,
sStyleName, sal_True );
@@ -2153,9 +2593,10 @@ sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName,
const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUString& rName ) const
{
const SvxXMLListStyleContext *pStyle = 0;
- if( xAutoStyles.Is() )
+ if (m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext( XML_STYLE_FAMILY_TEXT_LIST, rName,
sal_True );
pStyle = PTR_CAST( SvxXMLListStyleContext ,pTempStyle);
@@ -2167,9 +2608,10 @@ const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUSt
XMLPropStyleContext *XMLTextImportHelper::FindAutoFrameStyle( const OUString& rName ) const
{
XMLPropStyleContext *pStyle = 0;
- if( xAutoStyles.Is() )
+ if (m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext( XML_STYLE_FAMILY_SD_GRAPHICS_ID, rName,
sal_True );
pStyle = PTR_CAST( XMLPropStyleContext ,pTempStyle);
@@ -2182,9 +2624,10 @@ XMLPropStyleContext* XMLTextImportHelper::FindSectionStyle(
const OUString& rName ) const
{
XMLPropStyleContext* pStyle = NULL;
- if (xAutoStyles.Is() )
+ if (m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext(
XML_STYLE_FAMILY_TEXT_SECTION,
rName, sal_True );
@@ -2198,9 +2641,10 @@ XMLPropStyleContext* XMLTextImportHelper::FindPageMaster(
const OUString& rName ) const
{
XMLPropStyleContext* pStyle = NULL;
- if (xAutoStyles.Is() )
+ if (m_pImpl->m_xAutoStyles.Is())
{
- const SvXMLStyleContext* pTempStyle = ((SvXMLStylesContext *)&xAutoStyles)->
+ const SvXMLStyleContext* pTempStyle =
+ ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
FindStyleChildContext(
XML_STYLE_FAMILY_PAGE_MASTER,
rName, sal_True );
@@ -2224,63 +2668,75 @@ void XMLTextImportHelper::PopListContext()
const SvXMLTokenMap& XMLTextImportHelper::GetTextNumberedParagraphAttrTokenMap()
{
- if( !pTextNumberedParagraphAttrTokenMap.get() )
- pTextNumberedParagraphAttrTokenMap.reset(
+ if (!m_pImpl->m_pTextNumberedParagraphAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextNumberedParagraphAttrTokenMap.reset(
new SvXMLTokenMap( aTextNumberedParagraphAttrTokenMap ) );
-
- return *pTextNumberedParagraphAttrTokenMap;
+ }
+ return *m_pImpl->m_pTextNumberedParagraphAttrTokenMap;
}
const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockAttrTokenMap()
{
- if( !pTextListBlockAttrTokenMap.get() )
- pTextListBlockAttrTokenMap.reset(
+ if (!m_pImpl->m_pTextListBlockAttrTokenMap.get())
+ {
+ m_pImpl->m_pTextListBlockAttrTokenMap.reset(
new SvXMLTokenMap( aTextListBlockAttrTokenMap ) );
-
- return *pTextListBlockAttrTokenMap;
+ }
+ return *m_pImpl->m_pTextListBlockAttrTokenMap;
}
const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockElemTokenMap()
{
- if( !pTextListBlockElemTokenMap.get() )
- pTextListBlockElemTokenMap.reset(
+ if (!m_pImpl->m_pTextListBlockElemTokenMap.get())
+ {
+ m_pImpl->m_pTextListBlockElemTokenMap.reset(
new SvXMLTokenMap( aTextListBlockElemTokenMap ) );
-
- return *pTextListBlockElemTokenMap;
+ }
+ return *m_pImpl->m_pTextListBlockElemTokenMap;
}
SvI18NMap& XMLTextImportHelper::GetRenameMap()
{
- if( !pRenameMap.get() )
- pRenameMap.reset( new SvI18NMap() );
- return *pRenameMap;
+ if (!m_pImpl->m_pRenameMap.get())
+ {
+ m_pImpl->m_pRenameMap.reset( new SvI18NMap() );
+ }
+ return *m_pImpl->m_pRenameMap;
}
void XMLTextImportHelper::InsertBookmarkStartRange(
const OUString sName,
const Reference<XTextRange> & rRange,
- const OUString& i_rXmlId)
+ OUString const& i_rXmlId,
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & i_rpRDFaAttributes)
{
- aBookmarkStartRanges[sName] = std::make_pair(rRange, i_rXmlId);
- aBookmarkVector.push_back(sName);
+ m_pImpl->m_BookmarkStartRanges[sName] =
+ ::boost::make_tuple(rRange, i_rXmlId, i_rpRDFaAttributes);
+ m_pImpl->m_BookmarkVector.push_back(sName);
}
sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange(
const OUString sName,
Reference<XTextRange> & o_rRange,
- OUString& o_rXmlId)
+ OUString & o_rXmlId,
+ ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & o_rpRDFaAttributes)
{
- if (aBookmarkStartRanges.count(sName))
+ if (m_pImpl->m_BookmarkStartRanges.count(sName))
{
- o_rRange.set(aBookmarkStartRanges[sName].first);
- o_rXmlId = aBookmarkStartRanges[sName].second;
- aBookmarkStartRanges.erase(sName);
- BookmarkVector_t::iterator it=aBookmarkVector.begin();
- while(it!=aBookmarkVector.end() && it->compareTo(sName)!=0) {
+ Impl::BookmarkMapEntry_t & rEntry =
+ (*m_pImpl->m_BookmarkStartRanges.find(sName)).second;
+ o_rRange.set(rEntry.get<0>());
+ o_rXmlId = rEntry.get<1>();
+ o_rpRDFaAttributes = rEntry.get<2>();
+ m_pImpl->m_BookmarkStartRanges.erase(sName);
+ Impl::BookmarkVector_t::iterator it(m_pImpl->m_BookmarkVector.begin());
+ while (it != m_pImpl->m_BookmarkVector.end() && it->compareTo(sName)!=0)
+ {
it++;
}
- if (it!=aBookmarkVector.end()) {
- aBookmarkVector.erase(it);
+ if (it!=m_pImpl->m_BookmarkVector.end()) {
+ m_pImpl->m_BookmarkVector.erase(it);
}
return sal_True;
}
@@ -2292,62 +2748,68 @@ sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange(
::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName()
{
- if ( !aBookmarkVector.empty() ) {
- return aBookmarkVector.back();
+ if (!m_pImpl->m_BookmarkVector.empty()) {
+ return m_pImpl->m_BookmarkVector.back();
} else return ::rtl::OUString(); // return the empty string on error...
}
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > XMLTextImportHelper::GetRangeFor(::rtl::OUString &sName)
{
- return aBookmarkStartRanges[sName].first;
+ return m_pImpl->m_BookmarkStartRanges[sName].get<0>();
}
void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type )
{
- aFieldStack.push(field_stack_item_t(field_name_type_t(name, type), field_params_t()));
+ m_pImpl->m_FieldStack.push(Impl::field_stack_item_t(
+ Impl::field_name_type_t(name, type), Impl::field_params_t()));
}
void XMLTextImportHelper::popFieldCtx()
{
- aFieldStack.pop();
+ m_pImpl->m_FieldStack.pop();
}
void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value )
{
- DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before...");
- if (!aFieldStack.empty()) {
- field_stack_item_t &aFieldStackItem=aFieldStack.top();
- aFieldStackItem.second.push_back(field_param_t( name, value ));
+ DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
+ "stack is empty: not good! Do a pushFieldCtx before...");
+ if (!m_pImpl->m_FieldStack.empty()) {
+ Impl::field_stack_item_t & FieldStackItem(m_pImpl->m_FieldStack.top());
+ FieldStackItem.second.push_back(Impl::field_param_t( name, value ));
}
}
::rtl::OUString XMLTextImportHelper::getCurrentFieldName()
{
- DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before...");
- if (!aFieldStack.empty()) {
- return aFieldStack.top().first.first;
+ DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
+ "stack is empty: not good! Do a pushFieldCtx before...");
+ if (!m_pImpl->m_FieldStack.empty()) {
+ return m_pImpl->m_FieldStack.top().first.first;
} else return ::rtl::OUString();
}
::rtl::OUString XMLTextImportHelper::getCurrentFieldType()
{
- DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before...");
- if (!aFieldStack.empty()) {
- return aFieldStack.top().first.second;
+ DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
+ "stack is empty: not good! Do a pushFieldCtx before...");
+ if (!m_pImpl->m_FieldStack.empty()) {
+ return m_pImpl->m_FieldStack.top().first.second;
} else return ::rtl::OUString();
}
bool XMLTextImportHelper::hasCurrentFieldCtx()
{
- return !aFieldStack.empty();
+ return !m_pImpl->m_FieldStack.empty();
}
void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField)
{
- DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before...");
- if (!aFieldStack.empty() && xFormField.is())
+ DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
+ "stack is empty: not good! Do a pushFieldCtx before...");
+ if (!m_pImpl->m_FieldStack.empty() && xFormField.is())
{
- FieldParamImporter(&aFieldStack.top().second, xFormField->getParameters()).Import();
+ FieldParamImporter(&m_pImpl->m_FieldStack.top().second,
+ xFormField->getParameters()).Import();
}
}
@@ -2357,6 +2819,11 @@ void XMLTextImportHelper::ConnectFrameChains(
const OUString& rNextFrmName,
const Reference < XPropertySet >& rFrmPropSet )
{
+ static ::rtl::OUString s_ChainNextName(
+ RTL_CONSTASCII_USTRINGPARAM("ChainNextName"));
+ static ::rtl::OUString s_ChainPrevName(
+ RTL_CONSTASCII_USTRINGPARAM("ChainPrevName"));
+
if( !rFrmName.getLength() )
return;
@@ -2364,39 +2831,42 @@ void XMLTextImportHelper::ConnectFrameChains(
{
OUString sNextFrmName(GetRenameMap().Get( XML_TEXT_RENAME_TYPE_FRAME,
rNextFrmName ));
- if( xTextFrames.is() && xTextFrames->hasByName( sNextFrmName ) )
+ if (m_pImpl->m_xTextFrames.is()
+ && m_pImpl->m_xTextFrames->hasByName(sNextFrmName))
{
- rFrmPropSet->setPropertyValue( sChainNextName, makeAny(sNextFrmName) );
+ rFrmPropSet->setPropertyValue(s_ChainNextName,
+ makeAny(sNextFrmName));
}
else
{
- if( !pPrevFrmNames.get() )
+ if (!m_pImpl->m_pPrevFrmNames.get())
{
- pPrevFrmNames.reset( new SvStringsDtor );
- pNextFrmNames.reset( new SvStringsDtor );
+ m_pImpl->m_pPrevFrmNames.reset( new SvStringsDtor );
+ m_pImpl->m_pNextFrmNames.reset( new SvStringsDtor );
}
- pPrevFrmNames->Insert( new String( rFrmName ),
- pPrevFrmNames->Count() );
- pNextFrmNames->Insert( new String( sNextFrmName ),
- pNextFrmNames->Count() );
+ m_pImpl->m_pPrevFrmNames->Insert( new String( rFrmName ),
+ m_pImpl->m_pPrevFrmNames->Count() );
+ m_pImpl->m_pNextFrmNames->Insert( new String( sNextFrmName ),
+ m_pImpl->m_pNextFrmNames->Count() );
}
}
- if( pPrevFrmNames.get() && pPrevFrmNames->Count() )
+ if (m_pImpl->m_pPrevFrmNames.get() && m_pImpl->m_pPrevFrmNames->Count())
{
- sal_uInt16 nCount = pPrevFrmNames->Count();
+ sal_uInt16 nCount = m_pImpl->m_pPrevFrmNames->Count();
for( sal_uInt16 i=0; i<nCount; i++ )
{
- String *pNext = (*pNextFrmNames)[i];
+ String *pNext = (*m_pImpl->m_pNextFrmNames)[i];
if( OUString(*pNext) == rFrmName )
{
// The previuous frame must exist, because it existing than
// inserting the entry
- String *pPrev = (*pPrevFrmNames)[i];
+ String *pPrev = (*m_pImpl->m_pPrevFrmNames)[i];
- rFrmPropSet->setPropertyValue( sChainPrevName, makeAny(OUString( *pPrev )) );
+ rFrmPropSet->setPropertyValue(s_ChainPrevName,
+ makeAny(OUString( *pPrev )));
- pPrevFrmNames->Remove( i, 1 );
- pNextFrmNames->Remove( i, 1 );
+ m_pImpl->m_pPrevFrmNames->Remove( i, 1 );
+ m_pImpl->m_pNextFrmNames->Remove( i, 1 );
delete pPrev;
delete pNext;
@@ -2409,6 +2879,9 @@ void XMLTextImportHelper::ConnectFrameChains(
sal_Bool XMLTextImportHelper::IsInFrame() const
{
+ static ::rtl::OUString s_TextFrame(
+ RTL_CONSTASCII_USTRINGPARAM("TextFrame"));
+
sal_Bool bIsInFrame = sal_False;
// are we currently in a text frame? yes, if the cursor has a
@@ -2416,9 +2889,10 @@ sal_Bool XMLTextImportHelper::IsInFrame() const
Reference<XPropertySet> xPropSet(((XMLTextImportHelper *)this)->GetCursor(), UNO_QUERY);
if (xPropSet.is())
{
- if (xPropSet->getPropertySetInfo()->hasPropertyByName(sTextFrame))
+ if (xPropSet->getPropertySetInfo()->hasPropertyByName(s_TextFrame))
{
- Reference<XTextFrame> xFrame(xPropSet->getPropertyValue(sTextFrame), UNO_QUERY);
+ uno::Reference<XTextFrame> const xFrame(
+ xPropSet->getPropertyValue(s_TextFrame), UNO_QUERY);
if (xFrame.is())
{
@@ -2541,12 +3015,12 @@ void XMLTextImportHelper::SetChangesProtectionKey(const Sequence<sal_Int8> &)
OUString XMLTextImportHelper::GetOpenRedlineId()
{
- return sOpenRedlineIdentifier;
+ return m_pImpl->m_sOpenRedlineIdentifier;
}
void XMLTextImportHelper::SetOpenRedlineId( ::rtl::OUString& rId)
{
- sOpenRedlineIdentifier = rId;
+ m_pImpl->m_sOpenRedlineIdentifier = rId;
}
void XMLTextImportHelper::ResetOpenRedlineId()
@@ -2555,3 +3029,14 @@ void XMLTextImportHelper::ResetOpenRedlineId()
SetOpenRedlineId(sEmpty);
}
+void
+XMLTextImportHelper::SetCellParaStyleDefault(::rtl::OUString const& rNewValue)
+{
+ m_pImpl->m_sCellParaStyleDefault = rNewValue;
+}
+
+::rtl::OUString const& XMLTextImportHelper::GetCellParaStyleDefault()
+{
+ return m_pImpl->m_sCellParaStyleDefault;
+}
+
diff --git a/xmloff/source/text/txtlists.cxx b/xmloff/source/text/txtlists.cxx
index 24c09bde6e7f..ab90e2ae4000 100644
--- a/xmloff/source/text/txtlists.cxx
+++ b/xmloff/source/text/txtlists.cxx
@@ -453,6 +453,8 @@ XMLTextListsHelper::MakeNumRule(
sal_Bool* o_pRestartNumbering,
sal_Bool* io_pSetDefaults)
{
+ static ::rtl::OUString s_NumberingRules(
+ RTL_CONSTASCII_USTRINGPARAM("NumberingRules"));
uno::Reference<container::XIndexReplace> xNumRules(i_rNumRule);
if ( i_StyleName.getLength() &&
i_StyleName != i_ParentStyleName )
@@ -479,8 +481,7 @@ XMLTextListsHelper::MakeNumRule(
uno::Reference< beans::XPropertySet > xPropSet( xStyle,
uno::UNO_QUERY );
- any = xPropSet->getPropertyValue(
- i_rImport.GetTextImport()->sNumberingRules );
+ any = xPropSet->getPropertyValue(s_NumberingRules);
any >>= xNumRules;
}
else
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index f1cf89cb0640..61559549c6e7 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -90,7 +90,6 @@
#include <com/sun/star/text/XEndnotesSupplier.hpp>
#include <com/sun/star/drawing/XControlShape.hpp>
#include <com/sun/star/util/DateTime.hpp>
-#include "xmlkywd.hxx"
#include "xmlnmspe.hxx"
#include <xmloff/xmlaustp.hxx>
#include <xmloff/families.hxx>
diff --git a/xmloff/source/text/txtparai.cxx b/xmloff/source/text/txtparai.cxx
index d1d7273ddd46..a2f6c4a01f27 100644
--- a/xmloff/source/text/txtparai.cxx
+++ b/xmloff/source/text/txtparai.cxx
@@ -2067,7 +2067,7 @@ XMLParaContext::~XMLParaContext()
}
}
- OUString sCellParaStyleName = xTxtImport->sCellParaStyleDefault;
+ OUString const sCellParaStyleName(xTxtImport->GetCellParaStyleDefault());
if( sCellParaStyleName.getLength() > 0 )
{
// --> OD 2007-08-16 #i80724#
diff --git a/xmloff/util/makefile.mk b/xmloff/util/makefile.mk
index a7060d79504c..b8745b6b8fff 100644
--- a/xmloff/util/makefile.mk
+++ b/xmloff/util/makefile.mk
@@ -53,17 +53,8 @@ LIB1FILES= \
# --- Shared-Library -----------------------------------------------
-.IF "$(GUI)"!="UNX"
-LIB4TARGET= $(LB)$/ixo.lib
-LIB4FILES= $(LB)$/_ixo.lib
-.IF "$(GUI)"!="OS2"
-LIB4OBJFILES=\
- $(OBJ)$/xmlkywd.obj
-.ENDIF
-.ENDIF
-
SHL1TARGET= xo$(DLLPOSTFIX)
-SHL1IMPLIB= _ixo
+SHL1IMPLIB= i$(TARGET)
SHL1USE_EXPORTS=name
SHL1STDLIBS= \
@@ -86,21 +77,6 @@ SHL1STDLIBS+=-licg617mxp
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
SHL1LIBS= $(LIB1TARGET)
-
-SHL5STDLIBS= \
- $(TOOLSLIB) \
- $(SALLIB) \
- $(SALHELPERLIB) \
- $(CPPULIB) \
- $(CPPUHELPERLIB) \
- $(COMPHELPERLIB)
-
-.IF "$(GUI)"=="UNX" || "$(COM)"=="GCC"
- SHL5STDLIBS += -lxo$(DLLPOSTFIX)
-.ELSE
- SHL5STDLIBS += ixo.lib
-.ENDIF
-
# --- Def-File ---------------------------------------------------------
DEF1NAME =$(SHL1TARGET)